티스토리 뷰

Programming/JSP

07 쿠키(Cookie)의 기본

Lkt_Programmer 2017. 9. 22. 20:41
반응형

쿠키(Cookie)

 

쿠키(Cookie)는 웹 브라우저가 보관하는 데이터입니다. 웹 브라우저는 웹 서버에 요청을 보낼 때 쿠키를 함께 전송하며, 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해서 필요한 데이터를 읽을 수 있습니다. JSP에서 생성하는 쿠키는 웹 서버에서 생성 할 수 있습니다.

 

쿠키 동작 방식

 

쿠키 생성 단계 : JSP 프로그래밍에서 쿠키는 웹 서버측에서 생성되어, 생성한 쿠키를 응답 데이터의 헤더에 포함시켜 웹 브라우저에 전송합니다.

 

쿠키 저장 단계 : 브라우저는 응답 데이터에 포함된 쿠키를 저장합니다.

 

쿠키 전송 단계 : 브라우저는 저장한 쿠키를 요청이 있을 때마다 웹 서버에 전송합니다. 웹 서버는 전송받은 쿠키를 이용해서 필요한 작업을 수행합니다.

 

 

쿠키의 구성

 

이름 : 각각의 쿠키를 구분하는데 사용

 

● 값 : 쿠키의 이름과 관련된 값

 

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

 

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

 

● 경로 : 쿠리를 전송할 경로

 

 

Cookie 클래스 이용하여 쿠키 생성

 

 

<%

Cookie cookie = new Cookie("CookieName",

response.addCookie(cookie);

%>

 

Cookies 클래스 이용하여 쿠키 읽기

 

Cookie[] cookies = request.getCookie();

 

 

request.getCookie() 호출하면 Cookie 배열을 리턴합니다. 읽어올 쿠키가 존재하지 않는다면 null을 리턴하므로 소스로 구현 할 때는 null 유무를 판단하는 소스가 들어가서 NullPointerException 발생을 방지 해야 합니다.

 

쿠키 생성과 읽어오기 예제

 

쿠키를 생성하는 Create_Cookie.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
    <% 
        Cookie cookie1 = new Cookie("name","이기택");
        response.addCookie(cookie1);
        
        Cookie cookie2 = new Cookie("name2","홍길동");
        response.addCookie(cookie2);
    %>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
</body>
</html>

 

쿠키를 읽어와서 보여주는 Read_Cookie.jsp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page  import="java.net.URLDecoder"  %>
 
<html>
<head>
 
<title>Insert title here</title>
</head>
<body>
    <%
        Cookie[] cookies = request.getCookies();
        if(cookies != null && cookies.length >0)
        {
            for(int i=0;i<cookies.length;i++)
            {
    %>
        쿠키의 이름은 =<%=cookies[i].getName() %> <br />
        쿠키의 값은 = <%=URLDecoder.decode(cookies[i].getValue(),"utf-8")%> <br>
        
    <%
            }
        }else {
    %>
    쿠키가 존재하지 않습니다.
    <%
        }
    %>
 
</body>
</html>

 

쿠키 도메인

 

기본적으로 쿠키는 그 쿠키를 생성한 서버에만 전송이 된다. 같은 도메인을 사용하는 모든 서버에 쿠키를 보내기 위해서는 Cookie 클래스의 setDomain()을 통해 쿠키를 보낼 도메인을 설정하면 된다.

 

.도메인 : .으로 시작하는 경우 관련 도메인에 모두 쿠키를 전송합니다.

 

완전한 도메인: 특정 도메인에 대해서만 쿠키를 전송합니다. 

 

쿠키 경로

 

경로는 쿠키를 공유할 기준 경로를 지정합니다. setPath() 메서드를 통해 경로를 지정하게 되면 웹 브라우저는 지정한 경로 또는 그 경로의 하위 경로에 대해서만 쿠키를 전송하게 됩니다.

 

 

쿠키의 유효시간

 

쿠키의 유효시간을 지정하지 않으면 웹 브라우저를 종료할 때 쿠키를 함께 삭제시킵니다. 쿠키의 유효시간을 정해 놓으면 그 유효시간 동안 쿠키가 존재하며, 웹 브라우저를 종료해도 유효시간이 지나지 않으면 쿠키를 삭제시 않습니다.

 

유효시간을 지정하려면 setMaxAge() 메서드를 사용하여 초 단위로 유효시간을 지정합니다. 추가적으로 쿠키를 임의로 삭제 시키고 싶을 때 setMaxAge()를 0으로 지정하면 됩니다.

 

 

 

 

반응형