기능구현

  • 회원가입(주소API연동, 이메일 인증, ajax를 사용하여 아이디 중복검사)
  • 관리자 페이지(인터셉터 적용, 상품관리, 회원관리)
  • 업로드(이미지 등록, 수정, 삭제)
  • 검색
  • 페이징
  • 구매(장바구니, 포인트사용)
  • 댓글(등록,수정,삭제)
  • 중간에 막혔거나 에러 해결 못하겠으면 yoonbitnara@gmail.com 으로 문의


순서

  • 로그아웃 버튼 작성(main.jsp)
  • 로그아웃 메서드 작성(MemberController.java)
  • 테스트


로그아웃 버튼 작성(main.jsp)

  • 로그인 성공시 등장하는 class 속성이 login_success_area인 div태그 안에 아래의 a태그를 추가한다. url경로는 /member/logout.do로 했다. 아직 서버에 해당 url 메서드를 작성하지 않았기 때문에 동작은 하지 않는다.


<!--  로그인 상태 -->
				<c:if test="${member != null }">
					<div class="login_success_area">
						<span>회원 : ${member.memberName }</span>
						<span>충전금액 : <fmt:formatNumber value="${member.money }" pattern="\#,###.##"/></span>
						<span>포인트 : <fmt:formatNumber value="${member.point }" pattern="#,###"/></span>
						<a href="/member/logout.do">로그아웃</a>
					</div>
				</c:if>


  • 해당 버튼의 css를 아래와 같이 추가하였다.



.login_success_area>a{
    font-size: 15px;
    font-weight: 900;
    display: inline-block;
    margin-top: 5px;
    background: #e1e5e8;
    width: 82px;
    height: 22px;
    line-height: 22px;
    border-radius: 25px;
    color: #606267;    
}


로그아웃 메서드 작성(MemberController.java)

  • 앞에서 로그인 기능을 구현하기 위해 서버에 사용자의 아이디와 비밀번호가 있는지 확인한 후 로그인한 사용자의 정보를 세션에 저장했다.
  • 즉, 로그인이 되었다는 것은 세션에 사용자의 정보를 저장하였다는 의미다.
  • 반대로 로그아웃은 세션에 저장되어 있는 사용자의 정보를 지우는 작업을 의미한다. 우리가 작성할 메서드에 세션을 제거하는 작업을 한 뒤 메인페이지로 이동하도록 로직을 작성할 것이다.


  • MemberController.java
    • 메서드 방식은 GET방식이다. a태그의 요청은 GET방식이기 때문
    • url은 logout.do이다. a태그 속성에서 작성한 url경로이다.
    • session에 대한 작업을 해야하기 때문에 HttpServletRequest타입의 매개변수를 작성하였다.


  • MemberController.java


	/* 메인페이지 로그아웃 */
	@RequestMapping(value="logout.do", method = RequestMethod.GET)
	public String logoutMainGET(HttpServletRequest request) throws Exception {
		
	}


  • 세션을 제거하는 작업을 해야 하기 때문헤 HttpSession타입의 session 변수 및 초기화를 한다.


/* 메인페이지 로그아웃 */
	@RequestMapping(value="logout.do", method = RequestMethod.GET)
	public String logoutMainGET(HttpServletRequest request) throws Exception {
		
		logger.info("logoutMainGET 메서드 진입");
		
		HttpSession session = request.getSession();
		
		
	}


  • 우리는 사용자의 정보를 member라고 네이밍한 session을 삭제해야 한다. HttpSession api 문서를 보면 우리 목적에 맞는 session을 제거할 수 있는 메서드가 2개가 있다. invalidate()메서드의 경우 세션 전체를 무효화하는 메서드이다. removeAttribute()의 경우 특정 이름으로 네이밍 한 session 객체를 타겟팅하여 삭제하는 메서드이다.
  • 로그아웃을 할 경우 사용될 세션이 없기 때문에 나는 invalidate()메서드를 사용했다. 아래와 같이 session을 제거하는 코드와 메서드 실행 후 main페이지로 이동할 수 있도록 return문을 작성하였다.


	/* 메인페이지 로그아웃 */
	@RequestMapping(value="logout.do", method = RequestMethod.GET)
	public String logoutMainGET(HttpServletRequest request) throws Exception {
		
		logger.info("logoutMainGET 메서드 진입");
		
		HttpSession session = request.getSession();
		
		session.invalidate();
		
		return "redirect:/main";
	}


TEST



Leave a comment