웹개발 세션 타이머(Session Timer) 개념

은행이나 공공기관 웹페이지 접속 후 일정 시간 아무 동작을 안하면 로그아웃이 되는 경우를 경험했을 겁니다. 이와 같이 사용자 로그인 상태 유지나 세션 만료 시 처리가 중요한 기능이라 할수 있습니다. 이를 관리하는 핵심 도구 중 하나가 바로 세션 타이머(Session Timer)입니다. 이 글에서는 세션 타이머가 무엇인지, 어떻게 설정하고 활용하는지 실제 예제를 통해 알아보겠습니다.

세션(Session)이란?

세션은 클라이언트(사용자)와 서버 간의 상태 정보를 유지하기 위한 메커니즘입니다. HTTP는 기본적으로 상태를 유지하지 않는 프로토콜이기 때문에, 로그인 정보와 같은 사용자 상태를 유지하기 위해 세션을 사용합니다.

세션 타이머란?

세션 타이머는 세션의 유효 시간을 의미합니다. 일정 시간 동안 사용자의 요청이 없으면 세션이 자동으로 만료되어 로그아웃 상태가 됩니다. 보안 및 서버 자원 관리를 위해 꼭 필요한 기능입니다.

세션 타임아웃 설정 방법

1. web.xml 설정

가장 기본적인 설정 방법은 web.xml에서 세션 타임아웃을 정의하는 것입니다.

<web-app>
    <session-config>
        <session-timeout>15</session-timeout> <!-- 단위: 분 -->
    </session-config>
</web-app>

위 설정은 사용자가 15분 동안 아무런 요청을 하지 않으면 세션이 만료되도록 합니다.

2. Java 코드로 설정 (Servlet에서)

필요에 따라 서블릿 코드에서 직접 세션 타임아웃을 설정할 수도 있습니다.

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class SessionServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        HttpSession session = request.getSession();
        session.setMaxInactiveInterval(900); // 초 단위, 15분

        session.setAttribute("user", "홍길동");

        PrintWriter out = response.getWriter();
        out.println("세션이 설정되었습니다. 15분 후 만료됩니다.");
    }
}

세션 만료 감지 및 처리

세션이 만료되면 사용자는 다시 로그인 페이지로 이동하도록 설정할 수 있습니다.

3. 세션 유효성 체크 예제

<%
    String user = (String) session.getAttribute("user");
    if (user == null) {
        response.sendRedirect("login.jsp");
    }
%>

이 코드는 세션에 사용자 정보가 없으면 로그인 페이지로 자동 리다이렉트합니다. 보통 모든 JSP 페이지 상단에 공통으로 포함시키는 방식으로 많이 사용됩니다.

마무리

세션 타이머는 자바 웹개발에서 보안성과 사용자 편의성 모두를 고려해야 할 중요한 요소입니다. 너무 짧으면 사용자 불편을 초래하고, 너무 길면 보안 위험이 높아집니다. 일반적으로 금융 서비스나 관리자 페이지는 10~15분, 일반 서비스는 30분 정도가 권장됩니다.

적절한 세션 타이머 설정은 안정적인 웹 애플리케이션의 핵심이 될 수 있습니다. 위의 예제들을 참고해 여러분의 프로젝트에 잘 적용해보시길 바랍니다.

댓글 남기기