쿠키와 세션은 클라이언트와 서버 사이의 정보를 지속적으로 유지하기 위한 기술입니다.

우리가 다 알듯이 웹 브라우저에서 서버측으로 데이터를 요청하고 서버가 요청에 따른 처리를 한후 웹 브라우저에게 응답을 해줍니다. 그리고 서버는 웹 브라우저와의 관계를 종료시킵니다.

이게 HTTP라는 통신규약의 특징입니다.

예를들어 우리가 어떤 쇼핑몰에서 로그인을 한 후 쇼핑몰의 다른 페이지로 이동을 했을 경우 로그인이 끊기면 안되죠?

이때 쿠키 혹은 세션이라는 기술을 통해 사용자의 정보를 지속적으로 유지를 시켜줍니다.


먼저 쿠키란 서버에서 생성된 정보를 클라이언트측 하드에 저장을 시켜놓는겁니다. 그리고 서버쪽으로 되돌려 받는 방법이죠.

클라이언트가(웹 브라우저)가 사이트를 접속해서 해당 사이트의 쿠키가 있나 보고 쿠키가 있으면 웹 서버에 넘겨줍니다.

당연히 웹 브라우저가 쿠키를 지원하지 않는다면 쿠키를 사용할 수는 없습니다.

단점은 이 쿠키가 클라이언트측 하드에 저장이 되므로 악용될 가능성이 있습니다.


쿠키를 사용해 봅시다.

먼저 쿠키를 만들어야 됩니다.

새로운 쿠키를 만들때에는 

1. Cookie클래스를 사용해서 Cookie객체를 만들어야 합니다. 

2. addCookie()를 이용해서 웹 브라우저에게 쿠키를 보내주어야 합니다.

쿠키를 저장하는 일은 웹 브라우저가 알아서 하기때문에 따로 신경을 쓰지 않아도 됩니다.


cookieSet.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    Cookie cookie = new Cookie("Name","Value");    //쿠키생성
    response.addCookie(cookie);    //addCookie()를 통해 생성된 쿠키를 클라이언트에게 전송
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cookie만들기</title>
</head>
<body>
<h2>쿠키가 저장되었습니다.</h2>
<h3>쿠키의 이름은 : <%=cookie.getName()%></h3>
<h3>쿠키<%=cookie.getName()%>의 값은 <%=cookie.getValue()%></h3>
</body>
</html>
cs

4번라인처럼 쿠키를 생성합니다.

보시다시피 두개의 매개변수를 넘겨주는데요, 첫번째 매개변수가 쿠키의 이름, 두번째 매개변수가 쿠키의 값 입니다.

그리고 5번라인에서 response객체에 addCookie()를 이용해서 생성된 쿠키를 클라이언트에게 전송해줍니다.

addCookie()의 매개변수로는 쿠키객체를 넘겨줍니다.

이제 이렇게 저장된 쿠키를 웹브라우저는 웹 서버로 요청을 할 때마다 저장된 쿠키를 찾아서 모두 웹 서버에 보냅니다.

쿠키를 필요로 할때 그냥 받아서 사용만 하면 됩니다.

받아서 사용하기 위해서는 getCookies()라는 메소드를 이용합니다.

getCookies()는 request객체에 대해서 호출을 해야합니다.

그리고 getCookies()는 웹 브라우저에서 보내온 쿠키를 Cookie배열로 만들어서 반환합니다.

Cookie클래스는 cookie를 사용하기 위한 여러 메소드를 제공합니다.

Method Summary

Methods 
Modifier and TypeMethod and Description
java.lang.Objectclone()
Overrides the standard java.lang.Object.clone method to return a copy of this cookie.
java.lang.StringgetComment()
Returns the comment describing the purpose of this cookie, or null if the cookie has no comment.
java.lang.StringgetDomain()
Returns the domain name set for this cookie.
intgetMaxAge()
Returns the maximum age of the cookie, specified in seconds, By default, -1 indicating the cookie will persist until browser shutdown.
java.lang.StringgetName()
Returns the name of the cookie.
java.lang.StringgetPath()
Returns the path on the server to which the browser returns this cookie.
booleangetSecure()
Returns true if the browser is sending cookies only over a secure protocol, or false if the browser can send cookies using any protocol.
java.lang.StringgetValue()
Returns the value of the cookie.
intgetVersion()
Returns the version of the protocol this cookie complies with.
booleanisHttpOnly()
Gets the flag that controls if this cookie will be hidden from scripts on the client side.
voidsetComment(java.lang.String purpose)
Specifies a comment that describes a cookie's purpose.
voidsetDomain(java.lang.String pattern)
Specifies the domain within which this cookie should be presented.
voidsetHttpOnly(boolean httpOnly)
Sets the flag that controls if this cookie will be hidden from scripts on the client side.
voidsetMaxAge(int expiry)
Sets the maximum age of the cookie in seconds.
voidsetPath(java.lang.String uri)
Specifies a path for the cookie to which the client should return the cookie.
voidsetSecure(boolean flag)
Indicates to the browser whether the cookie should only be sent using a secure protocol, such as HTTPS or SSL.
voidsetValue(java.lang.String newValue)
Assigns a new value to a cookie after the cookie is created.
voidsetVersion(int v)
Sets the version of the cookie protocol this cookie complies with.

영어라 짜증나...ㅠㅠ


(파라미터는 생략~)

getName() : 쿠키의 이름을 반환 해줍니다.

getValue() : 쿠키의 값을 반환 해줍니다. 

getPath() : 쿠키의 전송경로를 반환해줍니다.

getVersion() : 쿠키의 버전을 알아옵니다.

setMaxAge() : 쿠키의 유효시간을 초단위로 지정해 줍니다.

setValue() : 쿠키의 값을 설정합니다.

setVersion() : 쿠키의 버전을 설정합니다.

이 정도만 알아도 괜찮겠죠...?



쿠키를 생성하고 조회까지 정리해봤습니다.

수정과 삭제도 같이 포스팅해야되는데.... 다음 포스팅에 이어서 하겠습니다.

졸음이...