세션이란?
- 세션은 웹 어플리케이션에서 사용자와 웹 서버 간의 상태를 유지하기 위한 기술
- HTTP프로토콜은 기본적으로 무상태(Stateless)이기 때문에 요청이 끝나면 클라이언트와 서버 간의 연결이 끊어짐
- 하지만 웹 어플리케이션 중에서는 사용자의 상태를 유지해야 할 필요가 있음.
세션의 핵심 개념
- 임시 저장소 : 서버 측에서 각 사용자별로 생성되는 임시 데이터 저장소
- 식별 방식 : 서버는 각 사용자에게 고유한 세션 ID를 부여. 이 ID는 보통 쿠키를 통해 클라이언트에 저장
- 수명 주기 : 세션은 일정 시간 동안 활동이 없으면 자동으로 만료됨. 아니면 사용자가 로그아웃하거나 브라우저를 닫으면 종료 될 수 있음
- 데이터 저장 : 로그인 정보, 사용자 선호도, 장바구니 내용 등 사용자 관련 데이터를 저장
예시
사용자가 웹사이트에 로그인을 하면 :
- 서버는 세션을 생성하고 사용자 정보를 저장
- 사용자가 다른 페이지로 이동해도 서버는 세션 ID를 통해 같은 사용자임을 인식
- 사용자가 로그아웃하기 전까지 로그인 상태를 유지
JAVA 웹 어플리케이션에서는 HttpSession 객체를 통해 세션을 관리
HttpSession
- 서블릿 API에서 제공하는 세션 객체
- 사용자의 정보를 관리하는데 사용
- 파라미터로 HttpSession session을 선언하면 Spring은 현재 사용자의 세션 객체를 자동으로 주입