사용자 입장에서 웹 페이지 사이의 상태나 정보를 공유하려면 프로그래머가 세션 트래킹(Session Tracking)이라는 웹 페이지 연결 기능을 구현해야 한다.
HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹 페이지에서는 알 수 없다.
HTTP 프로토콜은 각 웹 페이지의 상태나 정보를 다른 페이지들과 공유하지 않는 stateless 방식으로 통신을 한다. 따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결 기능, 즉 세션 트래킹을 이용해야 한다.
웹 페이지를 연동하는 방법
- <hidden> 태그 : HTML의 <hidden> 태그를 이용하여 웹 페이지들 사이의 정보를 공유
URL Rewriting : GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송
- 쿠키 : 클라이언트 PC의 쿠키 파일에 정보를 저장한 후 웹 페이지들이 공유
- 세션 : 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유
쿠키를 이용한 웹 페이지 연동
- 쿠키란 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 필요할 때 여러 웹 페이지들이 공유해서 사용할 수 있도록 매개 역할을 하는 방법이다.
- 정보가 클라이언트 PC에 저장된다.
- 저장 정보 용량에 제한이 있다.
- 보안이 취약
- 클라이언트 브라우저에서 사용 유무를 설정할 수 있다.
- 도메인당 쿠키가 만들어진다.
쿠키의 종류 => Persistence 쿠키, Session 쿠키
Persistence 쿠키
파일로 생성하며, 쿠키를 삭제하거나 쿠키 설정 값이 종료된 경우 종료된다. 최초 접속 시 서버로 전송되며, 로그인 유무 또는 팝업창을 제한할 때 사용한다.
Session 쿠키
브라우저 메모리에 생성되며, 브라우저를 종료한 경우 종료된다. 최초 접속 시 서버로 전송되지 않으며, 사이트 접속 시 Session 인증 정보를 유지할 때 사용한다.
세션을 이용한 웹 페이지 연동
- 세션도 웹 페이지들 사이의 공유 정보를 서버에 저장해 두고 웹 페이지들을 매개해 주는 방법이라는 점이 쿠키와 같다. 하지만 쿠키는 사용 시 웹 페이지들의 정보가 클라이언트 PC에 저장되므로 정보가 쉽게 노출될 수 있다는 단점이 있는 반면, 세션은 서버의 메모리에 생성되어 정보를 저장한다.
웹 페이지에서 사용되는 정보 중에 로그인 정보처럼 보안이 요구되는 정보는 대부분 세션을 이용한다.
- 정보가 서버의 메모리에 저장된다.
- 브라우저의 세션 연동은 세션 쿠키를 이용한다.
- 쿠키보다 보안에 유리하다.
- 서버에 부하를 줄 수 있다.
- 브라우저 당 한 개의 세션이 생성된다.
- 세션은 유효 시간을 가진다.
- 로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능등에 주로 사용된다.
서블릿에서 세션을 이용하려면 HttpSession 클래스 객체를 생성해서 사용해야 한다. HttpSession 객체는 HttpServletRequest의 getSession() 메서드를 호출해서 생성한다.
getSession(): 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성한다.
- getSession(true) : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성한다.
- getSession(false) : 기존의 세션 객체가 존재하면 반환하고, 없으면 null을 반환한다.
'IT' 카테고리의 다른 글
API 종류 (0) | 2024.08.17 |
---|---|
서블릿(Servlet) - 서블릿 속성, JSP 스크립트 요소 (0) | 2024.08.16 |
서블릿(Servlet) - forward, 바인딩 (0) | 2024.08.15 |
DB Index - B-tree 인덱스 (1) | 2024.08.14 |
REST API (0) | 2024.07.28 |