JSP에서 세션 관리: 세션 시작, 데이터 저장 및 불러오기, 타임아웃
이번 글에서는 JSP에서 세션을 관리하는 방법에 대해 기본 개념부터 실습 예제까지 다루어 보겠습니다. 세션은 웹 애플리케이션에서 사용자의 상태를 서버 측에서 유지하는 중요한 도구입니다.
1. 세션의 정의와 역할
세션은 사용자가 웹 애플리케이션과 상호작용하는 동안 서버가 사용자의 상태를 유지하기 위해 사용하는 메커니즘입니다. 예를 들어, 사용자가 로그인한 상태를 유지하거나 쇼핑몰에서 장바구니에 담은 상품을 추적하는 데 세션이 사용됩니다.
2. 세션 시작 및 관리 방법
JSP에서 세션은 HttpSession
객체를 통해 관리됩니다. 이 객체는 사용자가 웹 애플리케이션에 처음 접근할 때 자동으로 생성되며, 명시적으로 시작하려면 request.getSession()
메서드를 사용합니다.
세션 관리
세션이 생성된 후, HttpSession
객체를 사용하여 세션에 데이터를 저장하거나 세션의 유효성을 검증할 수 있습니다.
3. 세션 데이터 저장 및 불러오기
데이터 저장 (setAttribute)
세션에 데이터를 저장하려면 setAttribute(String name, Object value)
메서드를 사용합니다. 예를 들어, 사용자 이름을 세션에 저장하려면 다음과 같이 작성합니다.
session.setAttribute("username", "BlueShare");
데이터 불러오기 (getAttribute)
세션에 저장된 데이터를 불러오려면 getAttribute(String name)
메서드를 사용합니다. 예를 들어, 세션에서 사용자 이름을 가져오려면 다음과 같이 작성합니다.
String username = (String) session.getAttribute("username");
4. 세션 타임아웃 설정
세션 타임아웃이란?
세션 타임아웃은 사용자가 일정 시간 동안 활동이 없을 때 세션이 자동으로 종료되는 시간을 의미합니다. 이는 보안을 강화하고 서버 자원을 효율적으로 관리하는 데 중요한 역할을 합니다.
타임아웃 설정 방법
세션 타임아웃은 web.xml
파일에서 설정하거나, HttpSession
객체의 setMaxInactiveInterval(int interval)
메서드를 사용해 설정할 수 있습니다.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
또는 JSP 코드에서 직접 설정할 수도 있습니다.
session.setMaxInactiveInterval(30 * 60);
5. 세션 종료
세션 종료 방법
세션을 명시적으로 종료하려면 invalidate()
메서드를 사용합니다. 이 메서드는 세션을 즉시 종료하고, 세션에 저장된 모든 데이터를 삭제합니다. 예를 들어, 사용자가 로그아웃할 때 다음과 같이 세션을 종료할 수 있습니다.
session.invalidate();
6. 예제 코드
세션 데이터 저장 및 불러오기
다음은 사용자의 로그인 상태를 세션에 저장하고, 다른 페이지에서 이를 확인하는 간단한 예제입니다.
▼ login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>로그인 페이지</title>
</head>
<body>
<h2>로그인 페이지</h2>
<%
// String username = request.getParameter("username");
// 하드코딩된 사용자 이름으로 세션에 저장
String username = "BlueShare";
session.setAttribute("username", username);
// 환영 페이지로 리디렉션
response.sendRedirect("welcome.jsp");
%>
</body>
</html>
- String username = “BlueShare”;: 사용자 이름을 하드코딩하여 “BlueShare”로 설정합니다. 실제 애플리케이션에서는
request.getParameter("username")
을 사용하여 폼에서 입력된 사용자 이름을 받아옵니다. - session.setAttribute(“username”, username);: 설정된 사용자 이름을 세션에 “username”이라는 이름으로 저장합니다. 이후 다른 페이지에서 이 값을 사용할 수 있습니다.
- response.sendRedirect(“welcome.jsp”);: 세션에 사용자 이름을 저장한 후, 사용자를 환영 페이지(
welcome.jsp
)로 리디렉션합니다. 리디렉션은 클라이언트의 브라우저에서 페이지를 자동으로 이동시키는 작업입니다.
▼ welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>환영 페이지</title>
</head>
<body>
<h2>환영 페이지</h2>
<%
String username = (String) session.getAttribute("username");
if (username != null) {
out.println("환영합니다, " + username + "님!");
} else {
out.println("로그인 해주세요.");
}
%>
</body>
</html>
- session.getAttribute(“username”): 세션에서 “username”이라는 이름으로 저장된 값을 가져옵니다. 이 값은 이전에
login.jsp
에서 저장된 사용자 이름입니다. - if (username != null):
username
값이null
인지 확인합니다.null
이 아니라면 사용자가 로그인된 상태로 간주됩니다. - out.println(“환영합니다, ” + username + “님!”); 사용자가 로그인된 상태라면, 환영 메시지를 출력합니다.
- else: 사용자가 로그인하지 않은 상태라면 “로그인 해주세요.”라는 메시지를 출력합니다.
▼ 실행 결과 화면


세션 타임아웃 설정
특정 시간 동안 사용자가 활동하지 않으면 자동으로 로그아웃되는 예제입니다.
<%-- 세션 타임아웃 설정 --%>
<%
session.setMaxInactiveInterval(10 * 60);
%>
위 예제에서 사용자가 10분 동안 활동하지 않으면 세션이 종료되어 자동으로 로그아웃됩니다.
이 글을 통해 JSP에서 세션을 관리하는 기본적인 방법을 이해하고, 실습 예제를 통해 세션을 어떻게 활용할 수 있는지 살펴보았습니다.
관련 이전 게시글
- JSP 내장 객체 사용법: session과 application
- JSP 쿠키 사용하기: 생성, 읽기, 삭제 방법
- JSP와 Servlet 소개 및 활용도
- JSP 기본 문법: 디렉티브, 스크립틀릿, 표현식, 선언문
- JSP 액션 태그: include와 forward 사용법
이 글이 도움이 되셨다면 공유 부탁 드립니다.