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();