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;
'Spring > Ch2. Spring MVC' 카테고리의 다른 글
Spring MVC - 로그인 페이지 만들기3 (1) | 2022.09.21 |
---|---|
Spring MVC - 로그인 페이지 만들기2 (0) | 2022.09.20 |
Spring MVC - 로그인 페이지 만들기 (1) | 2022.09.19 |
Spring MVC - redirect와 forward (0) | 2022.09.19 |
Spring MVC - @RequestMapping (0) | 2022.09.19 |