본문 바로가기

Wanna be a Programmer/Servlet & JSP

Servlet & JSP day8 - Session, Cookie

 

Session 관리

HTTP 프로토콜은 stateless 한 특징을 가진다.

Stateless - 상태유지를 못한다. -> 클라이언트의 데이터를 유지하지 못 함

 

Session

하나의 클라이언트가 프로그램을 시작해서 종료 할 때까지

하나의 세션동안 여러번의 요청과 응답이 반복 될 수 있다.

하나의 세션동안 클라이언트의 데이터는 유지 되어야 한다.

 

Session 관리 개념

HTTP프로토콜의 특징은 클라이언트의 상태를 유지 못하므로 CGI에서 지원

방식

◎ Cookie를 이용

Session을 이용

URLReWriting을 이용

 

 

Cookie를 이용한 Session 관리

쿠키

서버가 브라우저(Client)로 전송하는 text 데이터

쿠키는 클라이언트의 정보를 유지하기 위한 데이터로 Web Browser에 저장된다

-> 클라이언트단에 저장

  key-value 형태로 관리됨

저장 데이터의 종류는 문자열만 가능

Web Browser는 쿠키를 사이트 별로 관리한다.

 

장점

서버에 부하를 줄일 수 있다.

 

단점

관리할 수 있는 데이터의 종류, 크기에 제약

보안상 문제

 

구문

쿠키 생성

- javax.servlet.http.Cookie 사용 - 하나의 쿠키 값을 가지는 객체

- HttpServletResponse.addCookie(Cookie c) : 쿠키를 client로 전송

ex) Cookie c = new Cookie("name", "value");

 response.addCookie(c);

 

쿠키 조회

- HttpServletRequest.getCookie() : Cookie[]

ex) Cookie[] c = request.getCookies();

 

Cookie 클래스 주요 메소드

getName() : String - name 값 조회

getValue() : String - value 값 조회

setMaxAge(int 초) - 쿠키가 web browser에 저장될 시간 설정

- 초 : 양수 - 저장될 시간, 음수 - web browser가 살아있는 동안(기본)

 

 

SetCookieServlet.java

 

GetCookieServlet.java

 

SetCookieServlet을 통해 쿠키 정보를 전송하고 GetCookieServlet을 조회하면 전송된 쿠키가  출력된다.

하지만 GetCookieServlet를 통해 서버를 재 시작하면 request.getCookie() 를 통해 조회한 값이 없어진다.

즉, 웹브라우저가 살아 있는 동안만 쿠키 정보를 전송 할 수 있다.