▶ 쿠키
● 쿠키 동작 방식
① 쿠키 생성 단계
- 주로 웹 서버 측에서 생성
- 자바 스크립트를 사용해서 클라이언트 측에서 쿠키를 생성하기도 한다.
- 생성된 쿠키는 응답 데이터와 함께 저장되어 클라이언트로 전송된다.
② 쿠키 저장 단계
- 웹 브라우저는 응답 데이터에 포함된 쿠키를 쿠키 저장소에 보관한다.
- 쿠키의 종류에 따라 메모리나 파일로 저장된다.
③ 쿠키 전송 단계
- 웹 브라우저는 한번 저장된 쿠키를 매번 요청이 있을 때마다 웹 서버에 전송
- 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해서 필요한 작업을 수행
● 쿠키의 구성
① 이름 : 각각의 쿠키를 구별하는데 사용되는 이름
- 하나의 웹 브라우저는 여러 개의 쿠키를 가질 수 있는데 이를 구분하는 것
- 아스키 코드의 알파벳과 숫자만을 포함할 수 이TEk.
- 콤마(,), 세미콜론(;), 공백(' ') 등의 문자는 포함할 수 없다.
- '$'로 시작할 수 없다.
② 값 : 쿠키의 이름과 관련된 값
- 각각의 쿠키는 관련된 값을 가지고 있어 이 값을 사용하여 원하는 작업을 수행
- 알파벳과 숫자 등의 값이 아닌 바이너리 값인 경우 BASE64 인코딩으로 처리해 주어야 한다.
③ 유효기간 : 쿠키의 유지 시간
④ 도메인 : 쿠키를 전송할 도메인
⑤ 경로 : 쿠키를 전송할 요청 경로
● 쿠키 생성하기
※ 사용 예
<% Cookie cookie = new Cookie("cookieName", URLEncoder.encode("cookieValue")); // 첫 번째 인자는 쿠키 이름, 두 번째 인자는 쿠키의 값 response.addCookie(cookie); %> |
● 쿠키 메소드
메 소 드 |
리턴 타입 |
설 명 |
getName() |
String |
쿠키의 이름을 구한다. |
getValue() |
String |
쿠키의 값을 구한다. |
setValue(String value) |
void |
쿠키의 값을 지정한다. |
setDomain(String pattern) |
void |
이 쿠키가 전송될 서버의 도메인을 지정한다. |
getDomain() |
String |
쿠키의 도메인을 구한다. |
setPath(String uri) |
void |
쿠키를 전송할 경로를 지정한다. |
getPath() |
String |
쿠키의 전송 경로를 구한다. |
setMaxge(int expiry) |
void |
쿠키의 우효 시간을 초 단위로 지정한다. 음수를 입력할 경우 웹 브라우저를 닫을 때 쿠키가 함께 삭제 된다. |
getMaxAge() |
int |
쿠키의 우효 시간을 구한다. |
● 쿠키 값 읽어 오기
※ 사용 예
<% Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) { for(int i = 0 ; i < cookies.length ; i++) { %> <%= cookies[i],getName() %> <%= URLDecoder.decode(cookies[i].getValue()) %> <br> <% } else { 쿠키가 존재하지 않습니다. } %> |
● 쿠키의 변경
- 같은 이름의 쿠키를 새로 생성해서 응답 데이터로 보내주면 된다.
- 같은 이름의 쿠키가 있는지 확인을 하고 있을 경우 같은 이름으로 생성하고 없을 경우는 새로운 쿠키를 만들어준다.
- 사용 예
<% Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) { for(int i = 0 ; i < cookies.length ; i++) { if(cookies[i].getName().equals("name")) {//같은 이름이 있는지 확인 Cookie cookie = new Cookie("name", URLEncoder.encode("newValue")); response.addCookie(cookie); } } } %> |
● 쿠키의 삭제
- 사용 예
<% Cookie[] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) { for(int i = 0 ; i < cookies.length ; i++) { if(cookies[i].getName().equals("name")) {//같은 이름이 있는지 확인 Cookie cookie = new Cookie("name", ""); cookie.setMaxAge(0); response.addCookie(cookie); } } } %> |
● 쿠키의 도메인
- 쿠키는 그 쿠키를 생성한 서버에만 전송되지만 다른 사이트로 연결할 때 같은 쿠키가 전송되게 하고 싶을 때
- 현재 서버의 도메인 및 상위 도메인에 대해서만 setDomain()을 설정할 수 있다.
- 현재 서버의 도메인이 www.asdf.com 일 때 www.asdf.com 이나 .asdf.net 만 설정할 수 있다.
- 사용 예
<% Cookie cookie = new Cookie("id", "sadf"); cookie.setDomain(".asdf.net"); response.addCookie(cookie); %> |
● 쿠키의 경로
- 지정한 경로 또는 하위 경로에 대해서만 쿠키를 전송한다.
- 사용 예
<% Cookie cookie = new Cookie("name", "value"); cookie.setPath("/asdf"); %> |
● 쿠키의 유효시간
- 지정하지 않을 경우 웹 브라우저를 닫으면 쿠키는 자동으로 삭제된다.
- 사용 예
<% Cookie cookie = new Cookie("name", "value"); cookie.setMaxAge(60*60); // 60초(1분) * 60 = 1시간 %> |
'JSP' 카테고리의 다른 글
제7장. 자바빈(JavaBean) (0) | 2009.03.30 |
---|---|
제6장. MVC(Mode-View-Controller) 개념 (0) | 2009.03.27 |
제4장. 필수 이해 요소 (0) | 2009.03.23 |
제3장. 내장객체(기본객체) request, response (0) | 2009.03.20 |
제2장. page 디렉티브와 스크립트 (0) | 2009.03.20 |