[java] 로그아웃 처리

이번에는 Java로 로그아웃 처리를 구현하는 방법에 대해 알아보겠습니다.

1. 세션(Session)을 사용한 로그아웃 처리

일반적으로 웹 애플리케이션에서 로그아웃을 처리하기 위해 세션을 사용합니다. 세션은 서버측에 생성되는 데이터 저장 공간으로, 각 클라이언트마다 고유한 세션 ID를 가지고 있습니다. 로그인 시에 세션 ID를 클라이언트에게 전달하고, 로그아웃 시에는 세션을 무효화(invalidate)하여 로그아웃을 처리합니다.

아래는 세션을 사용한 로그아웃 처리 예제입니다.

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class LogoutServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        HttpSession session = request.getSession(false); // 현재 세션 가져오기
        if (session != null) {
            session.invalidate(); // 세션 무효화
        }
        response.sendRedirect("login.jsp"); // 로그인 페이지로 이동
    }
}

위의 예제에서는 doGet() 메소드를 통해 로그아웃 처리를 합니다. 클라이언트의 요청을 통해 세션을 가져오고, 세션이 존재할 경우 세션을 무효화하여 로그아웃을 처리합니다. 마지막으로 로그인 페이지로 이동시킵니다.

2. 로그아웃 버튼 추가

로그아웃 처리를 위해선 로그아웃 버튼을 클릭할 수 있는 화면이 필요합니다. 예를 들어, 로그인 상태에서의 메인 화면에 로그아웃 버튼을 추가해야 합니다.

<!-- main.jsp -->
<!DOCTYPE html>
<html>
<head>
    <title>Main Page</title>
</head>
<body>
    <h1>Welcome to Main Page!</h1>
    <a href="logout">Logout</a> <!-- 로그아웃 버튼 -->
</body>
</html>

위의 예제에서는 logout 경로로 이동하는 하이퍼링크를 통해 로그아웃을 처리하도록 했습니다.

3. 웹 애플리케이션 설정

마지막으로, 로그아웃 처리를 위한 웹 애플리케이션의 설정이 필요합니다. 웹 애플리케이션의 web.xml 파일에 로그아웃 경로와 로그아웃 처리를 수행하는 LogoutServlet 클래스를 매핑해야 합니다.

<!-- web.xml -->
<web-app>
    <servlet>
        <servlet-name>LogoutServlet</servlet-name>
        <servlet-class>com.example.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LogoutServlet</servlet-name>
        <url-pattern>/logout</url-pattern> <!-- 로그아웃 경로 -->
    </servlet-mapping>
</web-app>

위의 예제에서는 LogoutServlet 클래스를 logout 경로에 매핑시켰습니다.

이렇게 설정 후에는 웹 애플리케이션에서 로그아웃 처리가 가능해집니다.

참고 자료