JSP and Session Management

JSP와 세션 관리 (JSP and Session Management)

세션 개념 (Concept of Session)

세션(Session)은 웹 애플리케이션에서 사용자가 웹 서버와 상호작용하는 동안 정보를 유지하는 방법을 말합니다. 세션은 서버 측에서 사용자의 상태를 저장하고, 사용자가 웹 페이지 간에 이동하더라도 데이터를 유지할 수 있게 합니다. 세션 정보는 일반적으로 각 사용자를 구분할 수 있는 고유한 세션 ID로 식별됩니다.

세션 추적 기술 (Session Tracking Technologies)

세션 추적은 사용자가 웹 애플리케이션과 상호작용하는 동안 세션 정보를 유지하기 위해 사용됩니다. 주요 세션 추적 기술은 다음과 같습니다:

쿠키 (Cookies)

쿠키는 사용자의 브라우저에 저장되는 작은 데이터 조각입니다. 서버는 클라이언트에 쿠키를 설정하여 세션 정보를 유지할 수 있습니다. 쿠키에는 세션 ID와 같은 정보가 포함될 수 있습니다.

예제: 쿠키 설정 및 사용

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// 쿠키 설정
Cookie cookie = new Cookie("sessionId", "12345");
cookie.setMaxAge(3600); // 쿠키의 유효 기간 설정 (초 단위)
response.addCookie(cookie);

// 쿠키 읽기
Cookie[] cookies = request.getCookies();
for (Cookie c : cookies) {
    if ("sessionId".equals(c.getName())) {
        String sessionId = c.getValue();
        // 세션 ID 사용
    }
}

URL 리라이트 (URL Rewriting)

URL 리라이트는 세션 ID를 URL에 포함시켜 세션을 유지하는 방법입니다. 브라우저가 쿠키를 지원하지 않는 경우에 유용하게 사용됩니다.

예제: URL 리라이트 사용

<%
    String sessionId = session.getId();
    String encodedURL = response.encodeURL("nextPage.jsp");
%>
<a href="<%= encodedURL %>">Next Page</a>

JSP에서 세션 다루기 (Handling Sessions in JSP)

JSP에서 세션을 다루는 방법을 살펴보겠습니다. JSP는 세션 관리를 쉽게 할 수 있도록 다양한 내장 객체와 메서드를 제공합니다.

세션 생성 및 가져오기

JSP 페이지에서 기본적으로 세션이 자동으로 생성되며, session 내장 객체를 통해 접근할 수 있습니다.

<%
    // 세션 객체 가져오기
    HttpSession session = request.getSession();
%>

세션 속성 설정 및 가져오기

세션 객체를 통해 데이터를 저장하고 가져올 수 있습니다.

<%
    // 세션 속성 설정
    session.setAttribute("username", "홍길동");

    // 세션 속성 가져오기
    String username = (String) session.getAttribute("username");
%>
<p>안녕하세요, <%= username %>님!</p>

세션 무효화

세션을 무효화하여 모든 세션 데이터를 제거할 수 있습니다.

<%
    // 세션 무효화
    session.invalidate();
%>
<p>세션이 종료되었습니다.</p>

예제: 로그인 및 로그아웃 구현

다음 예제는 간단한 로그인 및 로그아웃 기능을 JSP와 세션을 사용하여 구현한 것입니다.

login.jsp

<%@ page import="javax.servlet.http.*, javax.servlet.*" %>
<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");

    if ("user".equals(username) && "password".equals(password)) {
        // 로그인 성공
        HttpSession session = request.getSession();
        session.setAttribute("username", username);
        response.sendRedirect("welcome.jsp");
    } else {
        // 로그인 실패
        out.println("Invalid username or password");
    }
%>

welcome.jsp

<%@ page import="javax.servlet.http.*, javax.servlet.*" %>
<%
    HttpSession session = request.getSession(false);
    if (session != null && session.getAttribute("username") != null) {
        String username = (String) session.getAttribute("username");
%>
        <p>안녕하세요, <%= username %>님!</p>
        <a href="logout.jsp">로그아웃</a>
<%
    } else {
        response.sendRedirect("login.jsp");
    }
%>

logout.jsp

<%@ page import="javax.servlet.http.*, javax.servlet.*" %>
<%
    HttpSession session = request.getSession(false);
    if (session != null) {
        session.invalidate();
    }
    response.sendRedirect("login.jsp");
%>

이 예제에서는 사용자가 login.jsp에서 로그인하면 세션에 사용자 이름을 저장하고, welcome.jsp에서 사용자의 로그인 상태를 확인하여 인사말을 표시합니다. 사용자가 logout.jsp에서 로그아웃하면 세션이 무효화되고 로그인 페이지로 리디렉션됩니다.

이로써 JSP에서 세션을 관리하는 방법과 다양한 세션 추적 기술을 상세히 설명했습니다. 이러한 기술을 통해 웹 애플리케이션의 상태를 효과적으로 유지할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *