HttpSession

|
// 생성
HttpSession session = request.getSession(); // 기존 session이 있으면 기존 session object를, 없으면 새로 생성 후 반환
HttpSession session = request.getSession(false); // 기존 session이 있으면 기존 session object를, 없으면 null 반환

// 값 저장
session.setAttribute(String name, Object value);

// 값 얻기
Object obj = session.getAttribute(String name);
session.getId(); // JSESSIONID 반환
session.getMaxInactiveInterval(); // session timeout 값 반환

// 값 제거
session.removeAttribute(String name);// 특정 이름의 속성 제거
session.invalidate(); // 세션종료 (binding 되어 있는 모든 속성 제거)

Session

- javax.Servlet.Http 패키지의 interface인 HttpSession

- client 정보를 저장하는 방법을 제공하는 Java의 public interface
- 방문자가 웹 서버에 접속해 있는 상태
- WAS의 메모리에 Object의 형태로 저장
- 메모리가 허용하는 용량까지 제한없이 저장가능

- session은 server에 저장되는 정보이고 vs. cookie는 client에 저장되는 정보이다.

동작순서
- 클라이언트가 페이지 요청
- 접근한 클라이언트의 쿠키를 확인하여 해당 session-id를 보냈는지 확인
- session-id를 생성해 클라이언트에게 돌려줌
- 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장 (쿠키이름: JSESSIONID)
- 클라이언트 재 접속시, 이 쿠키를 이용하여 session-id값을 서버에 전달.

 

세션종료시기

- 타임아웃

- session 객체의 invalidate() 호출

- application 또는 server 종료

특징
- 웹 서버에 상태를 유지하기위한 정보를 저장
- 웹 서버에 저장되는 쿠키(세션쿠키)
- 서버에서 세션을 삭제 했을때만 삭제가 되므로, 쿠키보다 비교적 보안이 좋다.
- 각 클라이언트 고유 sesison id를 부여

- server resource를 사용하므로 server에 부담을 줄수 있다.

- 로드 밸런싱 시스템에서 session 처리가 쉽지 않다.

 

 

'Java' 카테고리의 다른 글

jar, war 파일 관련  (0) 2023.08.01
Servlet & Servlet Container  (0) 2023.06.13
Server 1대에 Multi version 의 JDK 사용  (0) 2022.12.06
DAO, DTO, VO  (0) 2022.03.21
좌석 예약 시스템  (0) 2019.08.01
And