46일차
회원가입
주소창 띄우기
addrPop.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String cp = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>주소 찾기</title>
<script type="text/javascript">
function doSelect(post, addr1) {
// opener 는 이 팝업을 열어준 창의 window 객체를 뜻한다.
opener.document.getElementById('post').value = post;
opener.document.getElementById('addr1').value = addr1;
self.close(); //자신(팝업창)을 스스로 닫는다.
}
</script>
</head>
<body>
<div style="text-align: center;">
<h1>동으로 주소찾기</h1>
<form action="<%=cp%>/members/addrPop" method="post">
동이름(예:화서,화서동) : <input type="text" name="dong" /> <input
type="submit" value="찾기" />
</form>
<div style="overflow: auto; height: 150px; white-space: nowrap;">
<c:forEach var="item" items="${list }">
<a href="javascript:doSelect('${item.post }','${item.addr1 }');">
${item.post } ${item.addr1 } </a>
<br />
</c:forEach>
</div>
</div>
</body>
</html>
로그인 기능 구현
MembersAController.java
package kr.co.khi.controller;
import java.util.*;
import javax.servlet.http.*;
import kr.co.khi.common.*;
import kr.co.khi.dao.*;
import kr.co.khi.dto.*;
import org.springframework.beans.factory.annotation.*;
import org.springframework.stereotype.*;
import org.springframework.ui.*;
import org.springframework.web.bind.annotation.*;
@Controller
public class MembersAController {
@Autowired
MembersDao dao;
@Autowired
LoginManager loginManager;
@RequestMapping(value = "/members/addrPop", method = { RequestMethod.GET,
RequestMethod.POST })
public String addrPop(
@RequestParam(value = "dong", defaultValue = "") String dong,
ModelMap map) {
System.out.println("동 : " + dong);
if (dong.length() > 0) {
// dao 를 통해서 주소를 받아서(list) ModelMap에 넣어서 addrPop으로 간다.
List list = dao.getAddrList(dong);
map.addAttribute("list", list);
// request.setAttribute("list",list); 와 같다.
}
return "members/addrPop";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(MembersDto dto, HttpServletRequest request) {
// MembersDto에 userid와 pass가 전송된다.
boolean result = dao.login(dto);
if (result) { // 아이디 패스워드 일치
// 이미 로그인한 사용자인지 검사
// 중복 로그인이면 기존 로그인한 사용자 강제 로그아웃.
if (loginManager.getIsLogon(dto.getUserid())) {
System.out.println("아뒤 중복되어 로그아웃");
loginManager.logout(dto.getUserid());
}
// 로그인 처리
HttpSession session = request.getSession();
session.setAttribute("userid", dto.getUserid());
session.setAttribute("manager", loginManager);
} else {
}
return "redirect:/";
}
@RequestMapping(value = "/logout", method = { RequestMethod.GET,
RequestMethod.POST })
public String logout(HttpServletRequest request) {
request.getSession().removeAttribute("userid");
request.getSession().removeAttribute("manager");
return "redirect:/?msg=" + request.getParameter("msg");
}
}
/*
* 3) Controller 클래스의 메소드 선언 <1> 인자타입(parameter type)으로 사용 가능한 타입 a.
* HttpServletRequest, HttpServletResponse, HttpSession b. java.util.Locale : 현재
* 지역정보 c. InputStream, Reader : 요청 컨텐츠에 직접 접근 d. OutputStream, Writer : 응답 컨텐츠로
* 사용 e. @RequestParam 을 이용한 파라미터 명시 f. Map, ModelMap : 뷰에 전달할 데이터 저장용 g.
* Command Class : @ModelAttribute 를 사용시 이름이 지정되고, 지정하지 않으면 클래스명이 지정됨(앞글자 소문자)
* h. Errors, BindingResult : 커맨드 클래스 바로 뒤에 위치해야함. 유효성 체크 위해 사용 i. SessionStatus
* : 폼 처리 완료시 호출하기 위해 사용 @SessionAttributes 와 같이 사용 <2> 리턴타입(return type)으로 사용
* 가능한 타입 a. ModelAndView : 일반적인 컨트롤러 메소드의 리턴객체 b. Map : 뷰에 전달할 데이터의 집합체, view
* 이름은 요청 URL로 결정(RequestToViewNameTranslator) c. String : view 이름으로 처리 d. void
* : 직접 응답 처리시
*/
'Dev. 640시간 뭉개기 > 강의내용정리' 카테고리의 다른 글
[WEB/SPRING] 48일차 - 답변형 게시판 만들기 (8) | 2012.10.05 |
---|---|
[WEB/SPRING] 47일차 - 회원 로그인 기능 구현, 답변형 게시판 만들기 (0) | 2012.10.05 |
[WEB/SPRING] 45일차 - AbstractWizardFormController을 활용한 회원가입 만들기 (0) | 2012.10.05 |
[WEB/SPRING] 44일차 - MyBatis 활용, svn 서버 활용 (0) | 2012.10.05 |
[WEB/SPRING] 43일차 - 스프링, mybatis, maven 연동 및 환경 세팅 (0) | 2012.10.05 |