본문 바로가기

[Servlet] 쿠키 : Cookie

인포꿀팁 발행일 : 2020-11-10

쿠키 Cookie

  • 쿠키는 클라이언트에 대한 정보를 클라이언트의 하드디스크에 저장한 TEXT 파일을 의미한다.
  • 텍스트 형태로 저장되기 때문에 변조, 복사가 가능하며 보안성이 없다.
  • 쿠키는 서버에서 사용자에게 편리한 기능을 제공하기 위해 많이 사용되고 웹 브라우저에 의해 관리된다.
  • 일반적으로 브라우저는 각 웹서버당 20개의 쿠키와 총 300개의 쿠키를지원하며 쿠키 크기는 각각 4kb로 제한될 수 있다.
  • 쿠키 정보는 javax.servlet.http.Cookie 클래스에 의해 관리된다.

javax.servlet.http.Cookie 클래스 생성자 및 주요 메소드

생성자 및 주요 메소드 설명
Cookie(String name, String value) 지정한 이름과 값을 가진 쿠키 객체를 생성한다.
String getDomain() 이 쿠키에 설정된 도메인을 반환 받는다.
int getMaxAge() 초 단위로 지정된  쿠키의 최대 유효 기간을 반환한다. 기본값은 브라우저가 종료될때까지 쿠키가 지속됨을 나타내는 -1이다.
String getName() 쿠키의 이름을 반환한다.
String getPath() 브라우저가 이 쿠키를 반환하는 서버의 경로를 반환한다.
boolean getSecure() 브라우저가 보안 프로토콜을통해서만 쿠키를 보내는 경우 true를 반환
브라우저가 프로토콜을 사용하여 쿠키를 보낼수 있다면 false 반환
String getValue() 쿠키의 값을 반환한다.
void setPath(String uri) 클라이언트가 쿠키를 리터해야하는 쿠키의 경로를 지정한다. 
기본은 쿠키를 설정한 페이지의 디렉토리인 현재 URL 및 아래 의 모든 하위 디렉토리이다.
void setValue(String newValue) 쿠키가 생성된 후 쿠키에 새 값을 할당한다.

쿠키 Cookie의 3단계

1)Cookie 설정하기

쿠키 객체를 생성하고, 생성자에 문자열로 쿠키이름과 값을 설정한다.

Cookie cookie = new Cookie("key", "value");

이름과 값은 영숫자와 공백이나 다음 문자를 포함할 수 있다.( []()=,"/?@:; )

 

setMaxAge(초) 메소드를 이용하여 쿠키 유효 기간을 초단위로 설정

유효기간을 설정하지 않을시 브라우저가 종료 될때까지 쿠키가 지속됨을 나타내는 -1이다.

 

HTTP 응답 헤더에 쿠키를 보낸다.

HttpServletResponse 인터페이스의 addCookie() 메소드에 의해 HTTP 응답 헤더에 쿠키를 보낸다.

JSP에서 쿠키를 설정시 response.addCookie(cookie);

 

쿠키 설정 주의 사항

***쿠키의 이름이나 값에 한글 등이 포함되는 경우 다음과 같이 java.net 패키지의 URLEncoder.encode()메소드를 이ㅛㅇ하여 주소 형식으로 인코딩해야한다.

Cookie cookie = new Cookie("key",URLEncoder.encode("값", "utf-8"));

***쿠키의 유효범위를 설정하지 않은 경우

쿠키를 설정하는 페이지의 경로와 하위 경로에서만 접근 가능 , 모든 경로에서 반환받을 경우 유효범위를 "/"로 설정한다.  cookie.setPath("/");

 

2)Cookie 가져오기

쿠키를 가져오기 위해서는 HttpServletRequest 인터페이스의 getCookies() 메소드를 이용해서 가져온다.

getCookies() 메소드는 javax.servlet.http.Cookie 객체의 배열을 반환한다.

JSP에서 쿠키가져오기

Cookie [] ck = request.getCookies();

반환받은 Cookie 객체의 getName() 과 getValue() 메소드를 이용하여 쿠키를 가져온다.

String name, value;
if(ck!=null){
	for(Cookie c:ck){
    	name=c.getName();
        value=c.getValue();
        	:
    }
}

3)Cookie 제거하기

Cookie cookie = new Cookie("제거할 쿠키이름", null);//쿠키값 지우기
cookie.setMaxAge(0); // 유효시간 만료
response.addCookie(cookie);//HTTP응답 헤더에 제거할 쿠키를 보낸다,

 

'Web > JSP&SERVLET' 카테고리의 다른 글

[Servlet] GET & POST  (1) 2020.11.24
[Servlet] 필터 : Filter  (0) 2020.11.11
[Servlet] 서블릿 이란?  (0) 2020.11.06
[WEB] URL과 URI  (0) 2020.10.28
[WEB] HTTP 와 HTTPS  (0) 2020.10.28

댓글