@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • bedrock api
  • invokemodel api
  • AWS CodeCatalyst
  • sagemaker unified studio
  • flink
  • AWS CodeArtifact
  • java
  • converse api
  • 인터페이스
  • 심폴릭링크
  • bedrock agent
  • 오블완
  • Agent
  • SageMaker
  • knowledge bases
  • AWS CodeStar
  • CLASS
  • Python
  • 티스토리챌린지
  • bedrock

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Back-end/JSP & Servlet

servlet session객체를 이용한 상태 유지

2022. 7. 6. 22:24
반응형

사용자가 요청하는 데이터에 대한 값을 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
    'Back-end/JSP & Servlet' 카테고리의 다른 글
    • servlet get,post 메소드에 특화된 서비스 함수
    • servlet cookie를 이용한 상태 유지
    • servlet servlet context 상태 저장소
    • servlet 입력으로 배열 받는 방법
    @Eeap
    @Eeap

    티스토리툴바