[JSP/Servlet] Session 관리
- BACKEND/Servlet&JSP
- 2017. 5. 10. 16:20
● 세션(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초 - 삭제
음수(기본값) - 웹브라우저가 실행 중인 동안만 저장.
+ 같은 이름의 쿠키값이 웹브라우저에 전송된 경우 기존쿠키를 새 쿠키값으로 변경한다.
'BACKEND > Servlet&JSP' 카테고리의 다른 글
[JSP/Servlet] Listener 및 ServletContext/ServletConfig 예제 (0) | 2017.05.10 |
---|---|
[JSP/Servlet] Form 예제 (0) | 2017.05.10 |
[Tomcat] 설치 메뉴얼 자료 (0) | 2017.05.10 |
[Jsp] 계산기(Calculator) 만들기 예제 (Redirect, Dispatch 방식 포함) (0) | 2017.05.10 |
[JSP/Servlet] Listener / Attribute (0) | 2017.05.10 |