JSP

쿠키 사용하기 01_쿠키 생성

yayeun 2016. 6. 2. 12:51

Cookie 쿠키 사용하기

웹 브라우저가 보관하고 있는 데이터로서, 웹 즈라우저가 웹 서버에 요청을 보낼 때 쿠키를 함께 전송

쿠키는 웹 브라우저, 웹 서버 양쪽에서 생성할 수 있고, 웹 서버는 웹 브라우저가 전송한 쿠키를 사용하여 필요한 데이터를 읽어 올 수 있다.


▣ 쿠키 사용 단계

- 쿠키 생선 단계 : JSP 에서는 주로 웹 서버 측에서 생성, 생선된 쿠키는 응답 데이터에 함께 저장, 웹 브라우저에 전송된다.

- 쿠키 저장 단계 : 웹 브라우저는 한번 저장된 쿠키를 요청이 있을 때마다 쿠키를 쿠키 저장소에 보관한다. (종에 따라 메모리나 파일로 저장)

- 쿠키 전송 단계 : 웹 브라우저는 한번 저장된 쿠키를 요청이 있을 때마다 웹 서버에 전송한다.

 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해 필요한 작업을 수행 할 수 있다.


* 웹 브라우저에 쿠키가 저장되면 웹 브라우저는 쿠키가 삭제되기 전까지 웹 서버에 쿠키를 전송한다.

  따라서, 웹 어플리케이션을 사용하는 동안 지속적으로 유지해야 하는 정보는 쿠키를 사용해서 저장한다.


쿠키의 구성

- 이름 : 각각의 쿠키를 구별하는데 사용되는 이름 (주요 구성 요소)

- 값 : 쿠키의 이름과 관련된 값 (주요 구성 요소)

- 유효 시간 : 쿠키의 유지 시간

- 도메인 : 쿠키를 전송할 도메인

- 경로 : 쿠키를 전송할 요청 경로


- 웹 브라우저가 여러 개의 쿠키를 가질 수 있는데 이들은 구분하기 위해서는 이름을 사용한다. 

  또한 각각의 쿠키는 관련된 값을 가지고 있으며 서버는 이 값을 이용해 원하는 작업을 수행한다.


이름 및 값에 대한 규칙

1 : 쿠키의 이름은 아스키코드의 알파벳과 숫자만을 포함 할 수 있다.

- 쿠키값이 알파벳과 숫자가 아닌 바이너리 값을 포함하고 있는 경우 BASE64 인코딩으로 처리해주어야 함.

2 : 콤마(,), 세미콜론(;), 공배("") 등의 문자는 포함 할 수 없다.

- 이들의 값을 포함하기 위해서는 반드시 인코딩 처리를 해주어야 함

3 : '$' 로 시작할 수 없다.


- 쿠키는 지속성을 갖고 있으며 얼마나 지속할 지의 여부를 지정할 수 있다.



쿠키 생성하기

Cookie 클래스를 사용해서 쿠키를 추가

1
2
3
4
<%
    Cookie cookie = new Cookie("cookieName","cookieValue");
    response.addCookie(cookie);
%>
cs

 2번 줄

 쿠키 정보를 담고 있는 cookie 객체를 생성(첫번째 인자 : 쿠키 이름, 두번째 인자 : 쿠키의 값)

 3번 줄

 addCookie 쿠키를 추가

- response.addCookie() 메서드를 사용하면 response 기본 객체는 웹 브라우저에 쿠키 정보를 추가로 전송



< -- makeCookie.jsp : 쿠키 생성하기 -- >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%
    Cookie cookie = new Cookie("name",URLEncoder.encode("자바","utf-8"));
    response.addCookie(cookie);
%>
<!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>Insert title here</title>
</head>
<body>
 
<%= cookie.getName() %> 쿠키의 값 = <%=cookie.getValue() %>
 
</body>
</html>
cs

 5번 줄

 추가할 쿠키 정보를 담고 있는 Cookie를 생성, URLEncoder 클래스를 사용해 쿠키의 값을 인코딩

 6번 줄

 응답 데이터에 쿠키를 추가 



< -- makeCookie.jsp : 출력 화면 -- >


▣ Cookie 클래스가 제공하는 메서드

 메서드

리턴타입 

설명 

 getName()

 String 

 쿠키의 이름을 구한다. 

 getValue() 

 String 

 쿠키의 값을 구한다. 

 setValue(String value) 

 void 

 쿠키의 값을 지정한다. 

 setDomain(String pattern) 

 void 

 이 쿠키가 전송될 서버의 도메인을 지정한다. 

 getDomain() 

 String 

 쿠키의 도메인을 구한다. 

 setPath()

 void 

 쿠키의 전송 경로를 지정한다.

 getPath() 

 String 

 쿠기의 전송 경로를 구한다.

 setMaxAge(int expiry)

 void 

 쿠기의 유효 시간을 초 단위로 지정, 음수로 입력 할 경우 웹 브라우저를 닫을 때 쿠키가 함께 삭제된다. 

 getMaxAge() 

 int 

 쿠키의 유효 시간을 구한다.