[Servlet] 쿠키 : Cookie
쿠키 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 |
댓글