사용자 입장에서 웹 페이지 사이의 상태나 정보를 공유하려면 프로그래머가 세션 트래킹(Session Tracking)이라는 웹 페이지 연결 기능을 구현해야 한다.

HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 한다. 브라우저에서 새 웹 페이지를 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 새 웹 페이지에서는 알 수 없다.

HTTP 프로토콜은 각 웹 페이지의 상태나 정보를 다른 페이지들과 공유하지 않는 stateless 방식으로 통신을 한다. 따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결 기능, 즉 세션 트래킹을 이용해야 한다.

웹 페이지를 연동하는 방법

  • <hidden> 태그 : HTML의 <hidden> 태그를 이용하여 웹 페이지들 사이의 정보를 공유

URL Rewriting : GET 방식으로 URL 뒤에 정보를 붙여서 다른 페이지로 전송

  • 쿠키 : 클라이언트 PC의 쿠키 파일에 정보를 저장한 후 웹 페이지들이 공유
  • 세션 : 서버 메모리에 정보를 저장한 후 웹 페이지들이 공유

 

쿠키를 이용한 웹 페이지 연동

  • 쿠키란 웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해 놓고 필요할 때 여러 웹 페이지들이 공유해서 사용할 수 있도록 매개 역할을 하는 방법이다.
  1. 정보가 클라이언트 PC에 저장된다.
  2. 저장 정보 용량에 제한이 있다.
  3. 보안이 취약
  4. 클라이언트 브라우저에서 사용 유무를 설정할 수 있다.
  5. 도메인당 쿠키가 만들어진다.

쿠키의 종류 => Persistence 쿠키, Session 쿠키

Persistence 쿠키

파일로 생성하며, 쿠키를 삭제하거나 쿠키 설정 값이 종료된 경우 종료된다. 최초 접속 시 서버로 전송되며, 로그인 유무 또는 팝업창을 제한할 때 사용한다.

Session 쿠키

브라우저 메모리에 생성되며, 브라우저를 종료한 경우 종료된다. 최초 접속 시 서버로 전송되지 않으며, 사이트 접속 시 Session 인증 정보를 유지할 때 사용한다.


 

세션을 이용한 웹 페이지 연동

  • 세션도 웹 페이지들 사이의 공유 정보를 서버에 저장해 두고 웹 페이지들을 매개해 주는 방법이라는 점이 쿠키와 같다. 하지만 쿠키는 사용 시 웹 페이지들의 정보가 클라이언트 PC에 저장되므로 정보가 쉽게 노출될 수 있다는 단점이 있는 반면, 세션은 서버의 메모리에 생성되어 정보를 저장한다.

웹 페이지에서 사용되는 정보 중에 로그인 정보처럼 보안이 요구되는 정보는 대부분 세션을 이용한다.

  1. 정보가 서버의 메모리에 저장된다.
  2. 브라우저의 세션 연동은 세션 쿠키를 이용한다.
  3. 쿠키보다 보안에 유리하다.
  4. 서버에 부하를 줄 수 있다.
  5. 브라우저 당 한 개의 세션이 생성된다.
  6. 세션은 유효 시간을 가진다.
  7. 로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능등에 주로 사용된다.

서블릿에서 세션을 이용하려면 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

+ Recent posts