본문 바로가기

JSP/JSP Programming

[JSP] 쿠키(Cookie)

반응형

■ 쿠키(Cookie)

 -. 클라이언트(사용자)의 컴퓨터 하드디스크에 일정 폴더에 사용자의 정보를 저장하기 때문에

    서버의부하를 줄일 수 있는 것이 쿠키를 사용함으로서 얻을 수있는 장점이다.

 -. 쿠키는 클라이언트의 하드디스크에 저장된 적은 양의 정보이다.

 -. 쿠키는 웹 브라우저에 탑재되어 전송된다.

 -. 웹 서버가 웹 브라우저에게 응답할 때 HTTP 프로토콜에 있는 HTTP 헤더에

    쿠키의 정보를 포함하여 클라이언트 쪽으로 보내진다.

    보내진 정보는 클라이언트의 컴퓨터 하드디스크 특정 폴더에 저장된다.

 -. 서버가 쿠키를 클라이언트에 저장해 두면 쿠키에 대한 정보를 필요로 하는 웹 페이지가 웹 서버에 요청될 때

    저장해 놓은 쿠키에 대한 정보를 웹 서버에 다시 건내준다.


01. 쿠키의 속성

 -. 쿠키는 사용자측에 대한 정보를 보관해 두었다가 웹 서버의 요청에 의해 그 정보를 원하는 순간 사용할 수 있다.

 -. 쿠키의 크기는 4KB 이하로 제한되어 있다.

 -. 300개 까지의 데이터 정보배열을 저장할 수 있다.

 -. 쿠키를 사용할 수 있는 최대 용량은 4KB X 300 = 1.2MB가된다.

 -. 쿠키의 크기는 4KB 이하로 제한되어 있으므로 작은 정보형태로 저장되고 오래된 정보는 자동 삭제된다.


02. 쿠키 관련 메소드

메 소 드

설                                    명

String getComment()

 -. 쿠키에 대한 설명을 알려준다.

String getDomain()

 -. 쿠키의 유효한 도메인 정보를 알려준다.

int getMaxAge()

 -. 쿠키의 사용할 수 있는 기간에 대한 정보를 알려준다.

String getName()

 -. 쿠키의 이름을 알려준다.

String getPath()

 -. 쿠키의 유효한 디렉토리 정보를 알려준다.

boolean getSecure()

 -. 쿠키의 보안이 어떻게 설정되어 있는지를 알려준다.

String getValue()

 -. 쿠키에 설정된 값을 알려준다.

int getVersion()

 -. 쿠키의 버전을 알려준다.

void setComment(String)

 -. 쿠키에 대한 설명을 설정한다.

void setDomain(String)

 -. 쿠키의 유효한 도메인을 설정한다.

void setMaxAge(int)

 -. 쿠키의 유효한 기간을 설정한다.

void setPath(String)

 -. 쿠키의 유효한 디렉토리를 설정한다.

void setSecure(boolean)

 -. 쿠키의 보안을 설정한다.

void setValue(String)

 -. 쿠키의 값을 설정한다.

void setVersion(int)

 -. 쿠키의 버전을 설정한다.



■ JSP에서의 쿠키 사용법

 쿠키를 이용하기 위해서는 request와 response 객체를 사용한다. 이미 저장되어 있는 쿠키의 값을 가져올 때에는 request 객체를 사용하고 값을 설정하고자 할 때는 response 객체를 사용한다.


① 새로운 쿠키를 생성하기

# 쿠키 생성하기

  setCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    // 1) 쿠키를 생성한다.
    Cookie info = new Cookie("testCooke", "I am First Cooke!!");
   
    // 2) 쿠키의 속성값을 설정한다.
    info.setMaxAge(365*24*60*60);    // 365일
    info.setPath("/");
   
    // 3) 쿠키를 추가한다.
    response.addCookie(info);    // 클라이언트 일정 폴더에 정보가 기록되는 순간
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>쿠키 생성하기</title>
</head>
<body>
<h2>쿠키를 생성하는 중입니다.........</h2>
</body>
</html>

 풀이



 출력화면



② 쿠키에 저장된 정보를 서버로 읽어온다.

# 설정된 모든 쿠키를 얻어와 출력하기

 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>
<center>
    <h3>[  쿠키의 정보 얻어오는 예제  ]</h3>
</center>
</body>
</html>
<%
    // 쿠키를 얻는다.
    Cookie[] cookies = request.getCookies();

    out.println("현재 설정된 쿠키의 개수 => " + cookies.length);
    out.println("<br/><hr/>");
   
    // 배열에 저장된 모든 쿠키의 정보를 알아내기 위해 for문을 사용하였다.
    for (int i = 0; i < cookies.length; i++) {
       
        out.println(i + "번째 쿠키의 이름 => " + cookies[i].getName());
        out.println("<br/><br/>");
        out.println("쿠키에 설정된 값 => " + cookies[i].getValue());
        out.println("<br/><hr/>");
    }
%>

 풀이

 출력화면



# 설정된 쿠키를 모두 삭제하기

 removeCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    Cookie[] cookies = request.getCookies();
   
    for (int i = 0; i < cookies.length; i++) {
       
        out.println(i + "번째 쿠키" + cookies[i].getName() + "삭제<br/>");
       
        // 쿠키의 유효시간을 만료시킨다.
        cookies[i].setMaxAge(0);
        response.addCookie(cookies[i]);
    }
%>

 풀이

 출력화면



반응형