😎 STS3 Spring 쇼핑몰

STS3 쇼핑몰 프로젝트[10] 로그아웃

개발자 린다씨 2022. 8. 2. 15:21
반응형

순서

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

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

3. 테스트

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

로그인 성공 시 등장하는 class 속성이 "menu"인 ul태그 안에 li 태그 안에 a태그를 추가합니다.

url 경로는 "/member/logout.me"로 하였습니다.(자신이 원하는 url을 작성하시면 됩니다.)

아직  서버에 해당 url메서드를 작성하지 않았기 때문에 동작은 하지 않을 것입니다.

<li><a href="/member/logout.me">로그아웃</a></li>

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

로그아웃은 세션에 저장되어 있는 사용자의 정보를 지우는 작업을 의미합니다.

따라서 세션을 제거하는 작업을 한 뒤 메인 페이지로 이동하도록 로직을 작성했습니다.

 

MemberController.java에 아래와 같이 메서드를 작성합니다.

// 로그아웃
@RequestMapping(value = "logout.me", method = RequestMethod.GET)
public String logoutMainGET(HttpServletRequest request) throws Exception {
	logger.info("logoutMainGET메서드 진입");
}

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

// 로그아웃
@RequestMapping(value = "logout.me", 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()") 있습니다.

"invalidate()" 메서드의 경우 세션 전체를 무효화하는 메서드입니다.

"removeAttribute()"의 경우 특정 이름으로 네이밍 한 session 객체를 찾아 삭제하는 메서드입니다.

 로그아웃을 할 경우 사용될 세션이 없기 때문에 저는 "invalidate()" 메서드를 사용하였습니다.

아래와 같이 session을 제거하는 코드와 메서드 실행 후 main페이지로 이동할 수 있도록 return문을 작성하였습니다.

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

 

3. 테스트

로그인 후 메인 페이지에 접속하여 로그아웃 버튼을 테스트합니다.

로그인
로그아웃

반응형