★★★★★★★★★★세션 매우 중요!!!!!★★★★★★★★★★
세션은 필수, 쿠키는 선택사항
true
)<%@ page session="true" %>
getId()
: 세션의 고유ID를 반환 (return String)getCreationTime()
: 첫 요청 시간(ms) 반환 (return long)getLastAccessedTime()
: 마지막 요청 시간(ms) 반환 (return long)웹 브라우저는 웹 서버에 연결할 때마다 매번 세션ID를 보내서 웹 서버가 어떤 세션을 사용할지 판단할 수 있게 한다. 브라우저와 세션ID를 공유하기 위해 사용하는 것이 바로 '쿠키'이다.
(쿠키 비허용이면 로그인 유지=세션 유지가 안 되는 이유)
IO 중에서도 외부 자원에 접근하는 IO는 더 오래 걸림
자주 쓰는 값은 기본객체 application이나 session에 속성으로 넣는게 간단
(물론 메모리에 부담은 커지므로 잘 생각해서 결정하기)
왜 쿠키보다 세션인가?
보안 문제. 쿠키와 달리 세션은 값을 서버에만 저장하므로 더 안전
하지만 세션은 여러 서버, 여러 어플리케이션에서 공유할 수 없다.
(ex. www.naver.com과 mail.naver.com의 세션은 다름;
물리적으로 or 논리적으로 분리되었을 경우 공유할 수 없다.)
때문에 둘을 함께 사용
invalidate()
: 현재 존재하는 세션 종료(무효화) 메서드 (=세션 기본객체 삭제)invalidate()
가 실행된 다음 요청부터 변경됨invalidate()
의 의미request.getSession()
request.getSession(false)
: invalidate되지않은 session이 존재하는 경우에만 session 반환
getLastAccessedTime()
<session-config>
<session-timeout>50</session-timeout>
</session-config>
setMaxInactiveInterval()
기본객체에서 값 구하기 방법
request로 세션 구하기. 세션에서 어플리케이션 구하기