lottie
Seungjun's blog
blog
HttpSession

HttpSession은 웹 애플리케이션에서 클라이언트와 서버 간의 상태를 유지하고 관리하기 위한 인터페이스입니다. 서블릿 컨테이너에서 제공되며, HTTP 프로토콜의 성격상 상태를 저장하지 않는 무상태(Stateless)한 특성을 보완하여 세션 유지를 가능하게 합니다.


HttpSession을 사용하면 동일한 사용자가 웹 애플리케이션에 여러 요청을 보내더라도 서버 측에서는 그 사용자의 상태를 유지할 수 있습니다. 주로 로그인 상태, 장바구니 정보, 세션 관리 등에 활용됩니다.


주요 메서드

  1. setAttribute(String name, Object value)getAttribute(String name):

    세션에 속성을 저장하고 가져올 때 사용합니다.

  2. removeAttribute(String name):

    세션에서 특정 속성을 제거할 때 사용합니다.

  3. invalidate():

    세션을 무효화시켜 로그아웃 등 세션 종료 시 사용합니다.

  4. getId():

    세션의 고유 식별자를 가져옵니다.

  5. setMaxInactiveInterval(int interval):

    세션의 비활성 시간 한계를 설정합니다. 클라이언트가 서버로부터 응답을 받지 않은 상태로 유지되는 시간을 지정하며, 초 단위로 설정됩니다.


    예제 코드

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/example")
public class ExampleServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 세션을 가져오거나 새로 생성
        HttpSession session = request.getSession();

        // 세션에 속성 설정
        session.setAttribute("username", "john_doe");

        // 세션에서 속성 읽기
        String username = (String) session.getAttribute("username");

        // 세션 무효화 (예: 로그아웃)
        // session.invalidate();

        response.getWriter().println("Username from session: " + username);
    }
}

이 예제에서는 /example 경로로 요청이 오면 세션을 생성하거나 가져온 후, 세션에 username 속성을 설정하고 읽어오는 간단한 로직을 보여줍니다.