일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- web
- SERVLET
- 자바의 신
- Design Pattern
- CQRS
- AWS101
- jsp
- facade pattern
- Java8 in action
- Java
- spring
- Template Method Pattern
- 스트림
- Was
- spring Batch
- 자바8
- 디자인 패턴
- ddd
- Java 8 in action
- 자바8인액션
- Stream
- spring boot
- 클린코드
- Java8
- Java in action
- Clean Code
- 자바
- domain
- head first
- 패스트캠퍼스
Archives
- Today
- Total
주난v 개발 성장기
세션 관리(Head First Servlet & JSP) 본문
등장 배경
웹 서버는 몇번을 요청을 보냈는지, 응답을 보냈는지 기억을 하지 못한다.
근데, 때로는 이를 기억해야할 필요가 있다.(결제, 장바구니)
컨테이너는 클라이언트를 어떻게 구분하나?
HTTP 프로토콜은 무상태 연결
브라우저 - 서버에 연결 - 요청 전달 - 응답 - 연결 해제
이러한 요청이 유지되는 것이 아니기 때문에 컨테이너는 새로운 클라이언트로부터 요청이 들어왔다고 인식한다.
유일한 세션ID가 필요하다.
클라이언트가 최초 요청을 보낼 때, 컨테이너는 클라이언트의 유일한 세션 ID를 생성한다.
그리고 이 값을 response에 전달한다.
다음 요청부터는 이 세션 ID와 함께 요청을 한다.
==> 이를 처리하는 일반적인 방법은 쿠키
클라이언트가 쿠키 사용을 막는다면?
백업으로 URL을 재작성한다, ;jsessionid=
세션 제거하기
다른 사이트로 가버리거나, 브라우저가 죽거나…
불필요한 세션이 필요 이상으로 서버에 남아있으면 별로…
HTTP 프로토콜은 클라이언트가 사라진건지 아닌지 알 수가없다.
- 타임아웃
- 특정 세션 타임아웃
- invalidate()
세션 이동
ServletContext : VM당 하나
ServletConfig : VM당, 서블릿당 하나
HttpSession : 웹 어플리케이션당 하나(분산 처리와 상관없음)
컨테이너는 요청이 들어오면, 접수하고 세션 ID를 확인.
다른 서버에 있는 지 체크 후 기존 서버는 invalidate()하고 현재로 활성화 시킨다.
'개발 성장기 > Servlet' 카테고리의 다른 글
요청과 응답(Head First Servlet & JSP) (0) | 2019.11.16 |
---|---|
웹 어플리케이션 아키텍쳐(Head First Servlet & JSP) (0) | 2019.11.16 |
Servlet ? JSP ? (Head First Servlet & JSP) (0) | 2019.11.16 |
필터와 랩퍼(Head First Servlet & JSP) (0) | 2019.11.16 |
속성과 리스너 (Head First Servlet & JSP) (0) | 2019.11.16 |