반응형
사용자가 요청하는 데이터에 대한 값을 req의 getSession을 통해 Session 객체를 이용하여 상태를 저장할 수 있다.
여기서 사용자가 WAS에 요청을 할 때 session id값을 할당받게 되고 WAS는 그 세션값에 해당하는 공간에 상태를 저장하게 된다.
session도 앞에서 봤던 servletcontext와 마찬가지로 getAttr와 setAttr를 통해 상태를 저장하거나 불러올 수 있다.
package com.newlec.web;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
@WebServlet("/calc2")
public class Calc2 extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
PrintWriter out = res.getWriter();
res.setCharacterEncoding("UTF-8");
res.setContentType("text/html; charset=UTF-8");
ServletContext application = req.getServletContext();
HttpSession session = req.getSession();
String v_ = req.getParameter("v");
String op = req.getParameter("op");
int v=0;
if (!v_.equals("")) v = Integer.parseInt(v_);
if (op.equals("=")) {
//int x = (Integer)application.getAttribute("value");
int x = (Integer)session.getAttribute("value");
int y = v;
int result=0;
//String operator = (String)application.getAttribute("op");
String operator = (String)session.getAttribute("op");
if (operator.equals("+")) result = x+y;
else result = x-y;
out.println("result is "+result);
}
else {
//application.setAttribute("value",v);
//application.setAttribute("op",op);
session.setAttribute("value",v);
session.setAttribute("op",op);
}
}
}
추가로 세션 객체는 기본적으로 톰캣에서는 30분이라는 세션 타임아웃을 갖고 있는데 세션 메소드로도 타임아웃을 설정할 수 있다.
void invalidate() //세션에서 사용되는 개체들을 바로 해제 즉, 초기화
void setMaxInactiveInterval(int interval) // 세션 타임아웃을 정수(초)로 설정 가능
boolean isNew() //세션이 새로 생성되었는지를 확인!
반응형
'Back-end > JSP & Servlet' 카테고리의 다른 글
servlet get,post 메소드에 특화된 서비스 함수 (0) | 2022.07.10 |
---|---|
servlet cookie를 이용한 상태 유지 (0) | 2022.07.06 |
servlet servlet context 상태 저장소 (0) | 2022.07.03 |
servlet 입력으로 배열 받는 방법 (0) | 2022.07.03 |
servlet utf-8 type 설정 및 serlvet filter 사용 (0) | 2022.07.02 |