본문 바로가기
Java

JAVA Session scope

by titlejjk 2023. 5. 31.

Java에서 seession scope(이하 세션 스코프)는 웹 애플리케이션에서 사용자의 상태 정보를 유지하고 공유하기 위해 사용된다. 세션은 사용자가 웹 애플리케이션과 상호작용하는 동안 유지되며, 클라이언트와 서버 간에 데이터를 저장하고 전달하는 데 사용된다.

먼저 세션 스코프의 사용이유와 어디서 사용해야 하는지에 대해 알아보자

 

세션 스코프를 사용해야 하는 이유👉

  1. 사용자 상태 유지
    세션 스코프를 사용하면 사용자가 웹 애플리케이션 내에서 여러 요청을 보낼 때 사용자의 상태 정보를 유지할 수 있다. 예를 들어, 로그인한 사용자의 정보, 장바구니 내용, 선호 언어 등을 세션에 저장하여 다른 페이지에서도 사용할 수 있다.
  2. 데이터 공유
    세션 스코프를 사용하면 여러 서블릿이나 JSP페이지 간에 데이터를 공유할 수 있다.
    그 예로, 사용자가 한 페이지에서 입력한 정보를 다른 페이지에서도 사용해야 할 때 세션을 활용할 수 있다.

세션 스코프를 사용하는 예제👉

 

이 예제에서는 Java Servlet과 JSP를 사용하여 세션 스코프를 활용하는 예제이다. 이 예제에서는 사용자가 로그인한 후 세션에 사용자 이름을 저장하고, 다른 페이지에서 해당 정보를 사용하여 환영 메세지를 표시하는 기능을 구현한다.

 

   1. 로그인 서블릿(LoginServlet.java)

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

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");

        // 세션 가져오기
        HttpSession session = request.getSession();

        // 세션에 사용자 이름 저장
        session.setAttribute("username", username);

        response.sendRedirect("welcome.jsp"); // 환영 페이지로 리다이렉트
    }
}

 

   2. 환영 페이지(welcome.jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome, <%= session.getAttribute("username") %>!</h1>
</body>
</html>

위의 예제에서는 로그인 서블릿에서 사용자가 입력한 이름을 세션에 저장한다. 그리고 환영 페이지에서는 세션에서 사용자 이름을 가져와서 환영 메세지를 표시한다.

로그인 페이지에서 사용자 이름을 입력하고 제출하면, 사용자 이름이 세션에 저장된다. 그런 다음 환영 페이지로 리다이렉트되고, 세션에서 사용자 이름을 가져와서 화면에 출력된다.

 

이처럼 세션 스코프를 사용하면 사용자의 로그인 상태를 유지하고, 사용자 상태에 따라 다른 기능을 제공할 수 있다. 또한 세션을 사용하여 여러 서블릿이나 JSP페이지 간에 데이터를 공유할 수 있다.

'Java' 카테고리의 다른 글

EL (Expression Language)  (0) 2023.06.13
JAVA Filter  (0) 2023.05.31
JAVA JSP  (0) 2023.05.30
JAVA RequestDispatcher  (0) 2023.05.26
JAVA JSP와 Servlet을 사용하여 게시판을 만드는 원리  (2) 2023.05.25

댓글