[WEB/SPRING] 46일차 - AbstractWizardFormController을 활용한 회원가입, 로그인 만들기 :: 소림사의 홍반장!

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) {

        // MembersDtouserid 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시간 뭉개기/강의내용정리 카테고리의 포스트를 톺아봅니다