Session 이란

 

서로 관련된 요청들을 하나로 묶은 것 - 쿠키(브라우저에 저장)를 이용

browser 마다 개별 저장소(session 객체, 서버에 저장) 를 서버에서 제공 - 1 : 1

"a collection of related HTTP transactions made one by browser to one server"

 

 

세션의 생성 과정

 

 

 

세션 객체 얻기

 

HttpSession session = request.getSession();
session.setAttribute("id", "asdf");

 

 

 

 

세션과 관련된 메서드

 

메서드 설명
String getId() 세션의 id를 반환
long getLastAccessedTime() 세션 내에서 최근 요청을 받은 시간을 반환
boolean isNew() 새로 생성된 세션인지를 반환. request.getSession() 호출 후 사용
void invalidate() 세견 객체를 제거(저장된 객체도 함께)
void setMaxInactiveInterval(int interval) 지정된 시간(초) 후에 세션을 종류(예약 종류)
int getMaxInactiveInterval() 예약된 세션 종류 시간을 반환

 

속성 관련 메서드 설명
void setAttribute(String name, Object value) 지정된 값(value)을 지정된 속성 이름(name)으로 저장
Object getAttribute(String name) 지정된 이름(name)으로 저장된 속성의 값을 변환
void removeAttribute(String name) 지정된 이름(name)의 속성을 삭제
Enumeration getAttributeNames() 기본 객체에 저장된 모든 속성의 이름을 반환

 

 

세션의 종료

 

수동종료

HttpSession session = request.getSession(); 
session.invalidate(); 						// 세션을 즉시 종료
session.setMaxInactiveInterval(30*60);		// 예약 종료(30분 후) 초 단위

 

자동종료 - web.xml

<session-config>
      <session-timeout>30</session-timeout> // 분단위
</session-config>

 

 

 

쿠키 vs 세션

 

쿠키(Cookie) 세션(Session)
브라우저에 저장 서버에 저장
서버 부담 X 서버 부담 O
보안에 불리 보안에 유리
서버 다중화에 유리 서버 다중화에 불리

 

처음 요청 시 서버에서는 클라이언트가 쿠키 생성 가능한 지와 상관 없이

 

URL과

<form action="/app/login/login;jsessionid=F7510B202808531C672FA67F8717D33C" method="post" onsubmit="return formCheck(this);">

헤더에 Set-Cookie 를 Session id 

두 가지 방법으로 보내준다.

Set-Cookie: JSESSIONID=F7510B202808531C672FA67F8717D33C;

 

복사했습니다!