1. 쿠키(Cookie)
- API : http://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html
- 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키를 함께 전송한다.
- 웹 서버는 전송받은 쿠키를 사용하여 필요한 데이터를 읽어올 수 있다.
- 웹 브라우저는 쿠키가 삭제되기 전까지 웹 서버에 쿠키를 전송한다.
- 웹 어플리케이션을 사용하는 동안 지속적으로 유지해야 하는 정보는 쿠키를 사용해서 저장한다.
- 쿠키는 지속성을 갖고 있고 얼마나 지속할 지의 여부를 지정할 수 있다.
2. 쿠키 동작 방식
- 쿠키 생성 : JSP 프로그래밍에서 쿠키는 주로 웹 서버 측에서 생성한다. 생성된 쿠키는 응답 데이터에 함께 저장되어 웹 브라우저에 전송된다.
- 쿠기 저장 : 웹 브라우저는 응답 데이터에 포함된 쿠키를 저장소에 보관한다. 쿠기의 종류에 따라 메모리나 파일로 저장된다.
- 쿠기 전송 : 웹 브라우저는 한번 저장된 쿠키를 매번 요청이 있을 때마다 웹 서버에 전송한다. 웹 서버는 쿠키를 사용해서 필요한 작업을 수행할 수 있다.
3. 쿠키 구성
- 쿠키의 주요 구성 요소는 이름과 값이다.
- 하나의 웹 브라우저가 여러 개의 쿠키를 가질 수 있다.
- 이름 : 각각의 쿠키를 구별하는데 사용되는 이름
- 값 : 쿠키의 이름과 관련된 값
- 유효 시간 : 쿠키의 유지 시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
- 큐키의 이름 및 값에 대한 규칙이 정의되어 있다.
- 쿠키의 이름은 아스키 코드의 알파벳과 숫자만을 포함할 수 있다.
- 콤마(,), 세미콜론(;), 공백(' ') 등의 문자는 포함할 수 없다.
- '$'로 시작할 수 없다.
- 쿠키의 값이 알파벳과 숫자가 아닌 바이너리 값을 포함하고 있는 경우 BASE64 인코딩으로 처리해야 한다.
4. 쿠키 생성
- Cookie cooke = new Cookie("쿠키명", "쿠키값");
- response.addCookie(cookie);
- Cookie 클래스를 사용하여 객체를 생성하고 인자값은 쿠키이름과 쿠키 값을 지정한다.
- response 기본 객체의 addCookie() 메서드를 사용하여 쿠키를 추가한다.
메서드 |
반환형 |
설명 |
getName() |
String |
쿠키의 이름을 구한다. |
getValue() |
String |
쿠키의 값을 구한다. |
setValue(String value) |
void |
쿠키의 값을 지정한다. |
setDomain(String pattern) |
void |
이 쿠키가 전송될 서버의 도메인을 지정한다. |
getDomain() |
String |
쿠키의 도메인을 구한다. |
setPath(String uri) |
void |
쿠키를 전송할 경로를 지정한다. |
getPath() |
String |
쿠키의 전송 경로를 구한다. |
setMaxAge(int expiry) |
void |
쿠키의 유효 시간을 초 단위로 지정한다. 음수를 입력할 경우 웹 브라우저를 닫을 때 쿠키가 함께 삭제된다. |
getMaxAge() |
int |
쿠키의 유효 시간을 구한다. |
<!-- setCookie.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String name = "gz", addr ="seoul"; Cookie cookie1 = new Cookie("name", name); Cookie cookie2 = new Cookie("addr", addr); response.addCookie(cookie1); response.addCookie(cookie2); %>
5. 쿠키 값 읽기
- Cookie[] cookies = request.getCookies();
- 웹 브라우저는 요청 헤더에 쿠키를 저장해서 보낸다.
- getCookies() 메서드는 Cookie 배열을 반환하고 쿠키가 존재하지 않을 경우에는 null을 반환한다.
<!-- getCookie.jsp --> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>쿠키</title> </head> <body> <% String key = "", value = ""; Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length >= 1) { for (Cookie c : cookies) { key = c.getName(); value = c.getValue(); out.print(key + " : " + value + "<br>"); } } %> </body> </html> <!-- 실행결과 name : gz addr : seoul -->
6. 쿠키 값 변경 및 쿠키 삭제
- 변경 : 같은 이름의 쿠키를 새로 생성해서 데이터로 보낸다.
- 삭제 : Cookie 클래스의 setMaxAge() 메서드를 호출할 때 인자 값으로 0을 준다.
7. 쿠키 유효시간
- 유효시간을 지정하지 않을 경우 웹 브라우저를 닫을 때 쿠키는 자동으로 삭제된다.
- setMaxAge() 메서드를 사용한다.
'Java > Java EE' 카테고리의 다른 글
JSP 액션태그 - <jsp:useBean> (4) | 2013.09.22 |
---|---|
JSP 기본(내장) 객체 - 세션(session) (0) | 2013.09.22 |
JSP 에러 처리(익셉션 처리) (0) | 2013.09.21 |
JSP request 객체의 속성으로 값 전달하기 (0) | 2013.09.21 |
JSP 액션 태그 - <jsp:forward> (0) | 2013.09.20 |