Tomcat 에서 지원하는 Http 세션 (HttpSession
) 이란?
HttpSession
은 자바 서블릿 API 에 의해 제공된다.- 유저를 식별하고 각 유저에 맞는 정보를 저장할 수 있게 해준다.
- 톰캣 내부에 구현이 있다.
- 톰캣은 오픈소스 웹서버이고 서블릿 컨테이너이다.
- 자바 서블릿과 자바 서버 페이지 (JSP) 스펙을 구현한다.
- 톰캣은 오픈소스 웹서버이고 서블릿 컨테이너이다.
HttpSession
인터페이스의 기능
- 서블릿 API 에 의해 제공되어 세션 식별자, 생성 시간, 마지막으로 엑세스한 시간 등 세션에 대한 정보를 보거나 조작하게 해준다.
- 객체를 세션에 바인딩하여 여러 사용자 연결에 걸쳐 사용자 정보를 유지할 수도 있다.
어떻게 동작하는가?
- 세션 생성
- 세션 ID
- 세션 속성
- 세션 타임아웃
- 세션 추적
세션 생성 (Session Creation)
- 유저가 처음 웹페이지에 방문했을 때, 새
HttpSession
이 서버에 의해 생성된다. - 기본값으로 서블릿 내부
request.getSession()
에 의해 수행된다. - 생성된 세션이 없는 경우에만 새로 생성된다.
세션 ID (Session ID)
- 새로운
HttpSession
이 만들어지면 고유한 세션 ID 가 할당된다. - 보통 쿠키에
JSESSIONID
라는 이름으로 저장된다. JSESSIONID
는 클라이언트 브라우저에 저장되고 서버로의 요청 시마다 같이 전달된다.- 서버는
JSESSIONID
를 통해 클라이언트를 식별하고 이에 대응되는HttpSession
을 가져온다.
세션 속성 (Session Attributes)
HttpSession
은 속성을 통해key-value
쌍을 저장할 수 있게 해준다.- 이 세션은 특정한 유저에게 할당된다.
setAttribute()
혹은getAttribute()
를 통해 조작할 수 있다.
세션 타임아웃 (Session Timeout)
- 세션에는 타임아웃이 있어서 비활성화(inactivity) 된 채로 특정 시간이 지나면 무효화시킨다.
- 톰캣은 기본으로 30분을 타임아웃 시간으로 준다.
- 타임아웃 시간은
web.xml
에서 얼마든지 커스터마이징할 수 있다. - 세션이 비활성화 되면 데이터는 지워지고 더이상 데이터에 접근할 수 없다.
세션 추적 (Session Tracking)
- 클라이언트 브라우저에서 쿠키를 지원하지 않으면 톰캣은 URL 을 통해 세션을 유지한다.
response.encodeURL()
메서드를 통해 세션 ID 로 URL 을 재작성할 수 있다.
세션 ID가 사용되는 곳
- 사용자 인증: 사용자 식별 및 권한 체크에 사용한다.
- 사용자 기본 설정: 언어 설정, 화면 사이즈 설정, 기본 색상 설정 등에 사용한다.
- 쇼핑 카트: 이커머스 앱 등에서 사용자 장바구니 기능 구현 등에 사용된다.
- 폼 데이터: 사용자의 회원가입 실패 시 이전에 입력했던 정보를 유지하는 등에 사용된다.
반응형
'Java > 톰캣 (Tomcat)' 카테고리의 다른 글
인텔리제이 콘솔에서 톰캣 한글 로그가 깨질 때 해결 방법 (0) | 2023.04.13 |
---|---|
web.xml 에서 사용하는 absolute-ordering 이란? (0) | 2023.03.20 |
web.xml 파일이란? 그리고 web.xml 파일의 역할 (0) | 2023.03.20 |
자바 서블릿(Servlet) 이란? (0) | 2023.03.20 |
WEB-INF 디렉토리란? (0) | 2023.03.20 |