4. 고객님을 어떻게 기억하
는가
요청을 받은 스레드는, 요청 정보를 고객의 세션에 저장
스레드는 요청에 대해 응답하면서, 쿠키
를 줌
아까 그 고객님이 다시 요청할때 아까 그 쿠키를 같이 줌
스레드는 세션ID를 보고 그 세션에서 고객의 정보를 뽑아씀
사실 그 쿠키에는 세션 ID가 적혀있음
5. Cookie의 전달
• HTTP Request -> Cookie 헤더
• HttpSession session = request.getSession(); ->
있다면 걔를 쓰고 없으면 새로 만들어요.
• HTTP Response - > Set Cookie 헤더
-> sessionid=0AAB23947 이런식으로
• 쿠키는 웹 브라우저의 캐시에 저장.
7. 리다이렉트 기억남?
잠깐 복습)
요청을 받아서 다른 애가 처리해주어야 할 필요가 있을 때
-> 리다이렉트 혹은 디스패치를 한다고 했었음,
URL 재작성:
URL을 다시 만들때, 세션ID를 URL 뒤에 붙여서 세션 ID를 전
달한다.
그러니까 URL +
ID# 97
8. 이렇게 재작성합니다.
response.encodeURL( "xxxxx.jsp ")
와 같이 하면 자동으로 xxxxx.jsp 뒤에 session id정보가 붙는다.
함수가 하나 더 있는데.. . response.encodeRedirectURL() 이다
...
다른페이지로 redirect 할때 사용하는 함수이다.
-> 근데 이러려면, 동적인 페이지에서만 가능하겠죠?
9. 세션 관리
session.
- getCreationTime(): 세션 생성된 시간 리턴
- getLastAccessedTime(): 이 세션의 마지막 요청 시간 리턴
- setMaxInactiveInterval(): 요청을 기다릴 최대 시간 설정
- getMaxInactiveInterval(): 요청을 기다릴 최대 시간 리턴
- invalidate(): 세션을 종료
10. 세션관리
session.
- getCreationTime(): 세션 생성된 시간 리턴
- getLastAccessedTime(): 이 세션의 마지막 요청 시간 리턴
- setMaxInactiveInterval(): 요청을 기다릴 최대 시간 설정
- getMaxInactiveInterval(): 요청을 기다릴 최대 시간 리턴
- invalidate(): 세션을 종료
DD에서
<session-timeout>123/*분*/<session-timeout>
11. 부록 - 쿠키 사용법
• 쿠키는 세션 id 말고 다른것(user id)도 저장할 수 있
습니다
Cookie cookie = new Cookie(“username”, name);
cookie.setMaxAge(30*60);
response.addCookie(cookie);
12. 세션 이동
• 한 어플리케이션이 여러 VM에서 돌아간다면,
클라이언트의 요청이 다른 VM으로 가서 세션을
이동할 필요가 있다.
• 세션 옮기기: VM1에서 비활성화하고 VM2에서 활
성화
VM1 VM2
13. 이동 방법은?
1. 직렬화 : 객체를 전달할 때… 오브젝트를 그냥 전달하면???
-> 참조가 객체에 들어있어서 전달이 제대로 안돼
-> 연속된 바이너리 형태로 객체를 저장해서, 전달할 수 있도록
한다.
2. HttpSessionActivationListener로 객체를 구현한다.
-> sessionDidActivate(): 필드를 원래대로 돌려놓기
-> sessionWillPassivate(): 직렬화안된 필드 읽어들이기
옮겨질 때를 알수 있으니까 준비할 수 있다.
14. 이렇게 세션에 무슨 일이
일어날때, 리스너를 통해 어
떤 코드를 실행시킬 수 있음
그래서 Listener를 씁니다.
15. 어떤 리스너가 있는지 정도는 알아
둡시다.
1. HttpSessionListener: 활성화된 세션들의 뒤를 캐고 싶을 때
2. HttpSessionActivationLister: 세션이 다른 VM으로 옮겨갈 때
3. HttpSessionBindingListener: 속성클래스가 다른 세션에
바인딩되거나 제거될 때(자신이 속
성)
4. HttpSessionAttributeListener: 속성을 세션에 추가, 제거 , 대체
될 때(이건 그냥 리스너)