Session Tracking
- HTTP 프로토콜 방식으로 통신하는 웹 페이지들은 서로 어떤 정보도 공유하지 않는다.
- 사용자 입장에서 웹 페이지 사이의 정보를 공유하려면 SessionTracking이라는 웹페이지 기능을 구현해야한다.
예를 들어서 카트 기능을 사용하는 웹애플리케이션에서 클라이언트(사용자)는 multiple requests를 사용하여 카트에 물건을 담는다.
이 때, 모든 요청이 생성될 때 마다 서버는 물건이 담기는 사용자를 식별해야만 한다. 따라서 SessionTracking이 필요하다.
- HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹페이지에서는 알 수 없다.
- 웹 페이지를 연동하는 방법
∙ <hidden>태그 : HTML의 <hidden>태그를 이용해 웹 페이지들 사이의 정보를 공유한다.
∙ URL Rewriting : GET 방식으로 URl 뒤에 정보를 붙여서 다른 페이지로 전송한다.
∙ Cookie : 클라이언트의 PC의 Cookie 파일에 정보를 저장한 후 웹 페이지들이 공유한다.
∙ Sesssion : 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유한다.
Cookie
- Cookie : 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 필요할 때 여러 웹페이지들이 공유해서 사용할 수 있도록 매개 역할을 하는 방법이다.
- Cookie의 특징
∙ 정보가 클라이언트 PC에 저장이 된다. 따라서 보안이 취약하다.
∙ 저장 정보 용량에 제한이 있다(파일용량 4kb).
∙ 클라이언트 브라우저에서 사용 유무를 설정할 수 있다.
∙ 도메인당 쿠키가 만들어진다(웹 사이트당 하나의 쿠키가 생성됨).
- Cookie의 종류
속성 | Persistence Cookie | Session Cookie |
생성 위치 | 파일로 생성 | 브라우저 메모리에 생성 |
종료 시기 | 쿠키 삭제 후 OR 쿠키 설정값이 종료 후 | 브라우저를 종료한 후 |
최초 접속시 전송여부 | 최초 접속시 서버로 전송 | 최초 접속 시 서버로 전송되지 않음 |
용도 | 로그인 유무 또는 팝업창 제한할 때 | 사이트 접속 시 Session 인증 정보를 유지할 때 |
- Cookie 기능 실행 과정
- 최초 접속시
1) Client(사용자)가 브라우저로 사이트에 접속하면 서버는 정보를 저장한 Cookie를 생성하고, 생성된 Cookie를 브라우저로 전송한다.
2) 브라우저는 서버로부터 받은 Cookie 정보를 Cookie파일에 저장한다.
- 재접속시
3) 브라우저가 다시 접속해 서버가 브라우저에게 쿠키 전송을 요청하면 브라우저는 Cookie정보를 서버에 넘겨주고, 서버는 Cookie정보를 활용한다.
Session
- Cookie는 사용 시 웹 페이지들의 정보가 클라이언트 PC에 파일로 저장되므로 정보가 쉽게 노출될 수 있다는 단점이 있지만, Session은 서버의 메모리에 생성되어 정보를 저장한다. 그렇기 때문에 로그인 정보처럼 보안이 요구되는 정보는 대부분 Session을 사용한다.
- Session의 특징
∙ 정보가 서버의 메모리에 저장된다.
∙ 브라우저의 Session 연동은 Session Cookie를 이용한다.
∙ 서버에 부하를 줄 수 있다.
∙ 브라우저(사용자)당 1개의 Session(정확히 말하면 Session Id)이 생성된다.
∙ Session은 유효시간을 가진다.(기본 유효시간 : 30분)
- Session 기능 실행과정
- 최초 접속시
1) Client(사용자)의 브라우저가 서버에 최초 접속하면 서버는 Session 객체를 생성한 후 Session 객체에 대한 Session Id를 브라우저에 전송한다.
(즉, 서버로부터 전송된 Session Id도 Cookie이며, Cookie의 이름은 jsessonid이다.)
2) 브라우저는 서버로부터 받은 Session Id를 브라우저가 사용하는 메모리의 Session Cookie에 저장한다. (Cookie의 이름은 jsessionid)
- 재 접속시
3) Client(사용자)의 브라우저가 재접속하면 브라우저는 Session Cookie에 저장된 Session Id를 서버에 전달한다.
4) 서버는 전송된 Session Id를 이용해 서버의 해당 Session에 접근하여 작업을 수행한다.
'Java > Servlet + JSP' 카테고리의 다른 글
[Servlet/JSP] Servlet 정리 (0) | 2020.03.09 |
---|---|
[Servlet/JSP] Apache와 Apache Tomcat 그리고 WebServer, WAS (0) | 2020.03.09 |
[Servlet/JSP] Web Application 정리 (0) | 2020.03.09 |
[Servlet/JSP] JSESSIONID??? (0) | 2020.01.23 |