[JSP/Servlet] Session 관리

● 세션(Session) 관리


- 세션 : 사용자가 프로그램 사용을 시작해서 종료 할 때까지의 일의 단위


- 세션 관리 : 한 세션동안 프로그램이 사용자의 데이터를 유지하도록 하는 것


- Web Program 은 HTTP 프로토콜상에서 실행되는 프로그램

  HTTP 프로토콜은 사용자의 데이터(상태)를 유지할 수 없는 프로토콜  => 상태유지를 못하는 프로토콜(stateless)


- Web Program에서 세션관리하는 방법

  + Cookie를 이용한 관리

  + Session을 이용한 관리

  + URL Rewriting 방식(거의 안씀)


● Cookie를 이용한 세션 관리

+ Cookie 란 : Client의 상태정보를 유지 하기 위해 서버가 Web Browser(클라이언트)에 전송하는 Text 데이터

- 쿠키 값은 name-value 쌍으로 구성되 있다

- 흐름

1. Server단에서 Cookie 데이터 생성(text고 name-value쌍)

2. 응답할때 생성된 Cookie 데이터를 보내준다

3. 웹브라우저는 서버에서 보낸 쿠키값을 저장하고 있는다

4. 웹브라우저가 서버에 요청할때 받은 쿠키값(들)을 전송한다

5. 서버단 프로그램은 쿠키값중 필요한 것이 있으면 사용한다


※서버프로그램 : 쿠키생성, 사용

  웹 브라우저 : 쿠키값 보관


+ 장점(Session을 이용한 관리와 비교해) 

- 서버에 메모리 부담이 적다


+ 단점

- 보안상 취약(Web Browser에 저장하므로)

- 데이터 종류, 크기, 개수 제약이 있다


+ Cookie관련 API

- 쿠키 생성 : javax.servlet.http.Cookie 클래스 이용

   ex) Cookie c = new Cookie("이름", "값");  //이름, 값의 타입 : String

- setName("이름") : 이름 설정

- setValue("값") : 값을 설정 -> 값을 변경시 사용


+ 응답시 쿠키값 Web Browser에 전송

- response.addCookie(쿠키객체);


+ 웹 브라우저가 전송한 쿠키값 조회

- Cookie [] cList = request.getCookies();  //  쿠키가 없으면 null 리턴.

- Cookie에서 name 조회 : getName() : String

- Cookie에서 value 조회 : getValue() : String


+ Cookie가 웹브라우저에 저장되 있을 시간 설정.

- cookie.setMaxAge(int 초)

초 : 양수 - 20 : 20초 동안 보관  ex) cookie.setMaxAge(60*60*24*365);  => 1년간 보관

0초 - 삭제

음수(기본값) - 웹브라우저가 실행 중인 동안만 저장.


+ 같은 이름의 쿠키값이 웹브라우저에 전송된 경우 기존쿠키를 새 쿠키값으로 변경한다.


댓글

Designed by JB FACTORY