전체 흐름 요약
[요청] "/farmStory/user/logout.do" (GET)
↓
[LogoutController]
↓
[세션 무효화 (invalidate)]
↓
[로그인 페이지로 리다이렉트 → login.do?result=101]
↓
[login.jsp에서 JavaScript alert("정상적으로 로그아웃 되었습니다.")]
정리
| 항목 |
예시 |
| 페이지/기능명 |
로그아웃 기능 |
| 사용 기술 |
JSP, Servlet, Session |
| 주요 흐름 |
Controller → Session invalidate → redirect |
| 클라이언트 처리 |
JS alert 메시지 (result=101) |
| 설계 의도 |
세션을 초기화하여 사용자 로그아웃 처리 |
[1] LogoutController.java — 로그아웃 컨트롤러
@WebServlet("/user/logout.do")
public class LogoutController extends HttpServlet {
private static final long serialVersionUID = 2267721817036680982L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 세션 해제
HttpSession session = req.getSession();
session.removeAttribute("sessUser");
session.invalidate();
// 로그인 페이지로 리다이렉트 (로그아웃 알림용 result 파라미터 포함)
resp.sendRedirect("/farmStory/user/login.do?result=101");
}
}
GET 방식으로 로그아웃 요청을 처리
- 로그인 시 저장한
sessUser 세션 속성을 제거하고, 세션 전체 무효화 (invalidate())
- 로그아웃 후 로그인 페이지로 리다이렉트하며, 쿼리 파라미터
result=101을 넘김
[2] login.jsp — 로그아웃 메시지 처리
<script>
const result = ${result};
if(result == 100){
alert('로그인 실패 했습니다.\n아이디, 비번을 다시 확인하세요.');
}else if(result == 101){
alert('정상적으로 로그아웃 되었습니다.');
}
</script>
result=101일 경우, JS로 “정상적으로 로그아웃 되었습니다.” 라는 알림창 표시
GET 방식으로 전달된 result 파라미터를 JSP에서 읽고 클라이언트에 메시지 출력
부가 설명
- 세션 무효화는 로그아웃 처리의 핵심으로, 로그인된 사용자 정보를 완전히 제거
invalidate()는 현재 세션 자체를 제거하므로, 보안상 안전함
- 로그아웃 후 다시 로그인하려면
/user/login.do로 이동해야 하며, 알림 메시지를 통해 사용자가 명확히 인지할 수 있음