본문 바로가기

Servlet&JSP

Servlet의 상태값 유지하기2 - Session Scope

 

ServletContext의 한계점 - 웹 어플리케이션 하나당 하나의 공통된 저장공간만 할당받는다.

만약 사용자별로 다른 데이터를 저장/사용하려면 사용할수 있는 방법이

세션공간을 활용하는것이다.

 

 

@WebServlet("/Cal_Sess")
public class Cal_Sess extends HttpServlet {
 
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
 
        PrintWriter out = resp.getWriter();
        String v_ = req.getParameter("v");
        String op = req.getParameter("operator");
 
        HttpSession sess = req.getSession();
 
        int v = 0;
        if(!v_.equals(""))
            v = Integer.parseInt(v_);
 
        if (op.equals("=")) {
 
            int x = (Integer)sess.getAttribute("value");
            int y = v;
            String operator = (String)sess.getAttribute("op");
 
            int result = switch (operator) {
                case "+" -> x + y;
                case "-" -> x - y;
                case "x" -> x * y;
                default -> x / y;
            };
            out.println("result is "+result);
        } else {
            sess.setAttribute("value", v);
            sess.setAttribute("op", op);
            resp.sendRedirect("/Session.jsp");
        }
    }
}
 
cs

 

ServletContext객체 대신 HttpSession객체를 만들어주는것만 제외하면 사용법은

달라진것이 없다.

 

 

하지만 사용자마다 고유의 SID를 할당받아 각각 다른 저장소를 사용하게 된다.