servlet, jsp

Statement Management - 상태 정보 유지

개발하는지호 2024. 1. 28. 16:05

Http 프로토콜의 특성 중 하나는 무상태(Stateless)로 동작한다는 것

 

따라서 이전에 연결된 시점의 상태 정보를 서버가 유지해주지 않는다!

 

그렇기 때문에 상태 정보를 일정 시간 동안 유지시키기 위해 특정 기술이 필요하다

 

이는 상태 정보를 클라이언트 쪽에 보관 혹은 서버 쪽에서 보관하는지에 따라 

 

쿠키(Cookie)세션(Session)으로 구분된다.

 

*상태 정보(State Information)

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

 

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

 

1. 저장 위치에 따른 분류

1-1 클라이언트 측에 저장 - Cookie

 

웹 브라우저에 저장한다는 의미 - 

javax.servlet.http.Cookie 클래스 활용

-> 코드 작성 후 Chrome 개발자 도구에서 확인

 

1-2 서버 측에 저장 - Session

 

서버가 가진 특정 객체에 저장한다는 의미

(ServletContext, HttpSession 등에 저장된다.)

 

*유지하려는 정보가 저정되는 위치와 해당 정보가 공개되어도 되는가? 등의 경우로 쿠키와 세션이 구분된다.

 

 

세션 트래킹(Session tracking)

 

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

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

2. 유지 기간에 따른 분류

*한 번 저장된 정보가 무기한 유지되진 않는다.

 

2-1 웹 에플리케이션 단위 유지

웹 애플리케이션이 서비스 되고 있는 동안 유지된다.

javax.servlet.ServletContext 객체

따라서, ServletContext 객체는 웹 애플리케이션 서비스가 시작될 때 생성, 종료할 때 소멸

 

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

클라이언트 별로 구분해서 유지(ex. 로그인 처리)

javax.servlet.Cookie, javax.servlet.Session

 

2-3 요청 단위 유지

클라이언트의 서비스 요청 단위로 유지(하나의 요청에 따른 응답이 이루어지면 연결이 끊김)

javax.servlet.http.HttpServletRequest

 

클라이언트 단위 유지 방식으로 사용되는 구체적인 사례

  1. 회원가입 화면에서 이전에 입력했던 정보들이 자동완성으로 입력될 수 있는 경우
  2. 쇼핑몰 사이트에서 로그인을 하지도 않았는데, 장바구니에 관심 물건이 담겨있는 경우