JSP
HttpSession 클래스를 이용한 세션 처리 방법
Kimjoy
2023. 10. 16. 20:49
- A클라이언트가 서블릿에 요청을 하면, 서블릿에서는 getSession() 메서드를 사용하여 session 영역을 생성하고 A클라이언트의 고유 식별값인 세션ID를 생성하여 session 영역에 저장시킨다. 일반적으로 session영역에는 장바구니 정보 및 로그인 정보 등을 저장한다.
- 서블릿의 실행 결과가 응답 처리될 때 자동으로 세션ID값이 포함되며, 동일한 브라우저에서 재요청이 발생되면 세션 ID값을 포함하여 요청처리된다. 서버는 재요청에 포함된 세션ID값을 이용하여 클라이언트와 연결 기능을 유지할 수 있다.
- A클라이언트가 일정시간(기본30분)동안 요청을 하지 않으면 서버는 클라이언트 정보를 제거할 목적으로 session 영역을 삭제한다. 로그아웃 같은 기능을 구현하기위해서는 session영역을 즉시 삭제한다.
❓ javax.servlet.http.HttpSession(인터페이스) 메서드
반환형 | 메소드 이름 | 메소드 기능 |
long | getCreationTime() | HttpSession객체가 생성된 시간을 밀리초 단위로 반환한다. |
String | getId() | HttpSession객체에 지정된 세션ID를 String타입으로 반환한다. |
int | getMaxInnactiveInterval() | 클라이언트의 요청이 없을 때 서버가 현재의 세션을 언제까지 유지할지를 초 단위로 반환한다. 기본 유효 시간은 1800초, 즉 30분이다. (기본값도 서버에서 설정 가능) |
void | setMaxInactiveInterval(int interval) | 세션의 최대유지시간을 초 단위로 설정한다. |
void | setAttribute(String name, Object value) | HttpSession 객체에 name으로 지정한 이름에 value 값을 설정한다. |
Object | getAttribute(String name) | HttpSession객체에 등록된 정보 즉 setAttribute() 메소드의 인자값으로 지정된 데이터의 값을 반환한다. |
Enumeration | getAttributeNames() | HttpSession 객체에 등록되어 있는 모든 정보의 이름만을 반환한다. |
void | removeAttribute(String name) | name으로 지정한 속성의 값을 제거 |
void | invalidate() | 현재 생성된 세션을 무효화시킴. 즉 현재 세션을 삭제한다. |
boolean | isNew() | 세션이 새롭게 만들어졌으면 true, 이미 만들어진 세션이면 false를 반환 |
❓세션 속성 설정 및 제거
- 내장객체인 session의 메소드 setAttribute()를 이용해 세션의 ID와 생성시간을 저장
session.setAttribute("id", session.getId();
- 세션을 제거하는 방법
- time-out을 지정하여 제거하는 방법
setMaxInactiveInterval(second) 메서드 사용
- 이미 지정된 세션 속성을 삭제
- 메소드 removeAttribute("id")와 같이 속성 이름을 인자로 호출
session.removeAttribute("id");
- 즉시 제거하는 방법
invalidate() 메서드 사용
session.invalidate();