세션이란?
- 서로 관련된 요청 응답들을 하나로 묶은 것 (쿠키를 이용)
- 브라우저 마다 개별 저장소(session객체)를 서버에서 제공 (1대1 관계)
- 로그인 부터 로그아웃 까지
세션의 생성 과정
- 클라이언트가 요청
- 서버가 세션 객체 생성
- 서버가 세션 아이디가 담긴 쿠키를 응답으로 보냄
- 브라우저에 쿠키가 저장
- 클라이언트가 요청을 보냄(쿠키가 자동으로 포함되어 전송)
- 서버가 요청 중에 쿠키가 포함된 세션 아이디를 확인하여 같은 브라우저에서 온 요청인지 확인
HttpSession session = request.getSession();
session.setAttribute("id","asdf");
- 일치하는 세션 아이디의 개별 저장소 사용
- jsp에서 session영역에서 접근하려면 sessionScope 사용
<c:set var="loginOutLink" value="${sessionScope.id==null? '/login/login':'/login/logout'}"/>
<c:set var="loginOut" value="${sessionScope.id==null? 'Login':'Logout' }"/>
세션의 종료
HttpSession session = request.getSession();
session.invaildate(); // 세션을 즉시 종료
session.setMaxInactiveInterval(30*60); // 예약 종료(30분 후)
<session-config>
<session-timeout>30<session-timeout>
</session-config>
- StandardManager가 자동으로 세션의 생성과 소멸을 관리한다 하더라도 서버에 부담이 크기 때문에 세션 저장소를 사용한다면 최소한의 데이터만을 담아야 한다.
쿠키 vs 세션
- 쿠키
- 브라우저에 저장
- 서버 부담 X
- 보안에 불리
- 서버 다중화에 유리
- 세션
- 서버에 저장
- 서버 부담 O
- 보안에 유리
- 서버 다중화에 불리