Skip to Content
Suffering builds character
아카이브15.서블릿Servlet/JSP특징3.상태 관리1. 상태 관리

1. 상태 관리

HTTP 프로토콜의 특성 중 하나는 상태를 유지하지 않는 무상태(Stateless)로 동작한다는 것으로,
기본적으로 이전에 연결된 시점의 요청과 관련된 상태 정보를 유지해주지 않음

따라서 상태 정보를 일정 시간동안 유지시키기 위해 특정 기술이 필요한데,
이러한 상태 정보를 클라이언트 쪽에서 유지할지, 서버 쪽에 유지할지에 따라 쿠키(Cookie)세션(Session)으로 구분됨

💡
Tip

상태 정보(State Information)

지속적인 클라이언트의 요청(화면 전환)에서 사용할 수 있도록 저장한 정보(ex, 로그인 정보)

이러한 상태 정보 유지 기술은 크게 저장 위치저장 기간에 따라 분류됨

1. 저장 위치에 따른 분류

javax.servlet.http.Cookie 클래스를 활용하여 브라우저 저장소에 저장

1-2. 서버 측에 저장 - Session

ServletContext, HttpSession 객체를 통해 서버가 가진 특정 객체에 메모리 형태 or 데이터베이스에 저장

💡
Tip

세션 트래킹(Session tracking)

클라이언트 별로 상태정보를 일정 시간동안 유지하여 사용되는 기술

  1. 클라이언트가 서버에 특정 자원에 대한 요청을 수행
  2. 요청한 클라이언트에 관한 정보 및 요청 시간 등을 조합한 세션 ID 및 세션 객체 생성
  3. 세션 ID는 클라이언트의 브라우저에 저장되고, 세션 객체는 서버에 저장됨
  4. 클라이언트가 요청을 할 때 서버에 세션ID를 같이 보내고, 서버는 세션 ID에 맞는 객체를 찾아서 특정 요청에 따른 처리에 사용함

2. 유지 기간에 따른 분류

서블릿에서는 상태 관리 방식을 유지 기간에 따라서도 구분할 수 있음

한 번 저장된 정보가 무기한 유지되진 않음

2-1. 웹 애플리케이션 단위로 유지

웹 애플리케이션이 서비스되고 있는 동안 유지하는 전략
따라서 ServletContext 객체는 웹 애플리케이션 서비스가 시작될 때 생성, 종료할 때 소멸됨
javax.servlet.ServletContext 객체를 활용

2-2. 클라이언트 단위 유지

클라이언트 별로 구분해서 유지하는 전략, 주로 로그인같은 인증에 활용
javax.servlet.Cookie, javax.servlet.Session 객체를 활용

ex. 로그인을 하지 않고도, 장바구니에 관심 물건을 담을 수 있는 경우

2-3. 요청 단위 유지

클라이언트의 서비스 요청 단위로 유지하는 전략, 하나의 요청에 따른 응답이 이루어지면 연결이 끊김
javax.servlet.http.HttpServletRequest 객체를 활용

Last updated on