[Servlet] 세션(Session)

세션(Session)에 동작 흐름에 대한 자세한 설명은 아래에 포스팅했으므로 보고 오는 것이 이해하는데 더 도움될 것이다.

https://yeo-computerclass.tistory.com/110?category=1269285 

 

[JSP & Servlet] 세션(Session)

📌세션(Session) 이란? 세션의 개념을 이해하기 위해선 HTTP 프로토콜의 특성부터 이해해야 한다. HTTP 프로토콜의 대표적인 특징 중의 하나는 상태를 유지하지 않는 것이다. 즉, 클라이언트가 한 번

yeo-computerclass.tistory.com

 

 

 

 

 

세션(Session)이란?

  • 정보가 서버의 메모리에 저장된다.
  • 브라우저의 Session 연동은 Session Cookie를 이용한다.
  • 브라우저 당 한 개의 Session이 주어지며 정보는 브라우저를 종료할 때 까지 유지된다.
  • Cookie보다 보안에 유리하다.

 

Cookie를 이용하여 아이디 저장이나 팝업창 보지않기 정도만 했다면, 보안에 더 유리한 Session 같은 경우 로그인 상태 유지 기능 등에 쓰인다.

 

 

 

 

 

 

세션(Session)의 흐름 과정

https://yeo-computerclass.tistory.com/m/110?category=1269285 

 

[JSP & Servlet] 세션(Session)

📌세션(Session) 이란? 세션의 개념을 이해하기 위해선 HTTP 프로토콜의 특성부터 이해해야 한다. HTTP 프로토콜의 대표적인 특징 중의 하나는 상태를 유지하지 않는 것이다. 즉, 클라이언트가 한 번

yeo-computerclass.tistory.com

 

가벼운 설명

  • 클라이언트가 서버에 최초 접속한다.
  • 서버는 Session 객체를 생성 후 Session id를 브라우저에 보낸다.
  • 브라우저는 Session id를 브라우저 내 메모리에 JSESSIONID란 이름으로 저장
  • 클라이언트가 다시 접속할 시 JSESSIONID를 서버에 전송
  • 서버에서 해당 Session id가 있는지 확인 후 존재하면 해당 Session 객체 사용

 

 

 

 

 

 

Session API

세션 생성

Servlet에서 Session을 사용하기 위해서는 HttpSession 클래스 객체를 생성해서 사용해야 한다.

HttpSession session = request.getSession();
  • getSession(): 기존의 세션 객체가 존재하면 반환, 없으면 새로 생성
  • getSession(true): 기존의 세션 객체가 존재하면 반환, 없으면 새로 생성
  • getSession(false): 기존의 세션 객체가 존재하면 반환, 없으면 null 반환

 

 

 

HttpSession 메소드

반환 타입 메소드 설명
Object getAttribute(String name) 속성 이름이 name인 속성 값을 Object 타입으로 반환.
해당하는 속성 이름이 없을 경우 null 반환
Enumeration getAttributeNames() 세션 속성 이름들을 Enumeration 객체 타입으로 반환.
long getCreationTime() 세션 생성된 시간을 mile second로 반환
long getLastAccessedTime() 세션 객체에 가장 최근에 접근한 시간을 반환
String getId() 세션에 할당된 고유 식별자를 반환
int getMaxInactiveInterval() 현재 생성된 세션을 유지하기 위해 설정된 세션 유지 시간을 int 타입으로 반환
void setAttribute(String name,
                    Object value)
세션 속성 이름이 name인 속성에 속성 값으로 value를 할당
void setMaxInactiveInterval
(int interval)
세션을 유지하기 위한 세션 유지 시간을 초 단위로 설정
void removeAttribute(String name) 세션 속성 이름이 name인 속성을 제거
boolean isNew() 최초로 생성된 세션인지 기존에 생성되어 있었던 세션인지 판별
void invalidate() 세션을 삭제

 

  • Session 유효 시간을 따로 설정하지 않으면 톰캣 사용시 톰캣에서 설정한 기본 유효 시간 30분 설정된다.