Cookie를 효율적으로 관리하고 사용하자
쿠키는 웹 어플리케이션에서 클라이언트의 정보를 임시로 저장하기 위해 많이 사용된다. 또한, 클라이언트의 상태를 유지할 때 사용되는 세션을 구현하기 위해 쿠키를 사용하기도 한다. 쿠키를 사용함으로써 좀더 쉽고 간결한 방법으로 웹 어플리케이션을 구현할 수 있게 되는 경우가 많은데 이를 좀더 편하게 관리하기 위해서는 쿠기를 사용할 수 있는 보조 클래스를 만들어서 사용하게 되면 편리하다.
CookieBox.java
* @(#)CookieBox.java
* Copyright (c) 2000~ NowOnPlay.com inc., All rights reserved.
* Total E-Business Group, http://www.nowonplay.com
*
* 최초작성일자 : April 15, 2008 (hmjkor@nowonplay.com)
* 수정이력 :
*/
package kevin.common.utils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Cookie;
import java.util.HashMap;
import java.util.Map;
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.io.IOException;
/**
* 쿠기를 보다 관리하기 쉽도록 만든 클래스로서
* http://javacan.madvirus.net/에 있는 내용을 토대로 작성되었다.
* @author diem
*
*/
public class CookieBox {
/* 쿠기를 담기위한 맵 */
private Map cookieMap = new HashMap();
/**
* 생성자
* request로 받은 쿠키값을 Key, value 값으로 매핑한다.
* @param request
*/
public CookieBox(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0 ; i < cookies.length ; i++) {
cookieMap.put(cookies[i].getName(), cookies[i]);
}
}
}
/**
* 쿠키를 저장한다.
* @param name 이름
* @param value 값
* @return
* @throws IOException
*/
public static Cookie createCookie(String name, String value)
throws IOException {
return new Cookie(name, URLEncoder.encode(value, "euc-kr"));
}
/**
* 쿠키를 저장한다.
* @param name 이름
* @param value 값
* @param path 경로
* @param maxAge 유효시간
* @return
* @throws IOException
*/
public static Cookie createCookie(
String name, String value, String path, int maxAge)
throws IOException {
Cookie cookie = new Cookie(name,
URLEncoder.encode(value, "euc-kr"));
cookie.setPath(path);
cookie.setMaxAge(maxAge);
return cookie;
}
/**
* 쿠키를 저장한다.
* @param name 이름
* @param value 값
* @param domain 도메인
* @param path 경로
* @param maxAge 유효시간
* @return
* @throws IOException
*/
public static Cookie createCookie(
String name, String value,
String domain, String path, int maxAge)
throws IOException {
Cookie cookie = new Cookie(name,
URLEncoder.encode(value, "euc-kr"));
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setMaxAge(maxAge);
return cookie;
}
/**
* 해당되는 쿠키를 가져온다.
* @param name
* @return 쿠키값
*/
public Cookie getCookie(String name) {
return (Cookie)cookieMap.get(name);
}
/**
* 요청한 쿠키 이름의 값을 가져온다.
* 가져온 값이 없을 경우 null을 리턴한다.
* @param name 쿠키 이름
* @return
* @throws IOException
*/
public String getValue(String name) throws IOException {
Cookie cookie = (Cookie)cookieMap.get(name);
if (cookie == null) return null;
return URLDecoder.decode(cookie.getValue(), "euc-kr");
}
/**
* 요청한 쿠기값이 있는지의 여부를 가져온다.
* @param name 요청할 쿠키값
* @return
*/
public boolean exists(String name) {
return cookieMap.get(name) != null;
}
}
소스를 간단하게 설명을 하면 쿠기를 담는 맵을 생성 한 후 그 맵에 Key, Value 값으로 담아두고 Key에 해당하는 쿠기를 가져오는 클래스이다.
이를 사용하기 위해서는 다음과 같이 사용하면 된다.
CookieBox cookieBox = new CookieBox(request);
// 쿠키가 존재하지 않으면 null 리턴
Cookie idCookie = cookieBox.getCookie("id");
// 지정한 이름의 쿠키가 존재하는지의 여부
if (cookieBox.exists("name")) { ... }
//지정한 이름의 쿠키가 존재하지 않으면 값으로 null 리턴
String value = cookieBox.getValue("key");
이글은 최범균님의 홈페이지에서 참고한것 입니다.
'DEVELOPMENT > Java' 카테고리의 다른 글
ckeditor 이미지 업로드시 반환 리턴값 보내기 (0) | 2009.10.26 |
---|---|
ibatis 로그 남기기 (0) | 2009.10.08 |
Spring 2.5 annotation (0) | 2009.10.08 |
[java] String 배열을 List에 넣기 (0) | 2009.01.19 |
[jsp browser] jsp파일 소스 보는 프로그램 (1) | 2008.03.10 |
[javascript] 쿠키 설정, 추출, 삭제 예제
<HTML>
<HEAD>
<TITLE>자바 스크립트 쿠키 셋팅, 추출, 삭제 예제</TITLE>
<STYLE type = "text/css">
table{ font-size:9pt; }
</STYLE>
<SCRIPT>
/**
* 쿠키값 추출
* @param cookieName 쿠키명
*/
function getCookie( cookieName )
{
var search = cookieName + "=";
var cookie = document.cookie;
// 현재 쿠키가 존재할 경우
if( cookie.length > 0 )
{
// 해당 쿠키명이 존재하는지 검색한 후 존재하면 위치를 리턴.
startIndex = cookie.indexOf( cookieName );
// 만약 존재한다면
if( startIndex != -1 )
{
// 값을 얻어내기 위해 시작 인덱스 조절
startIndex += cookieName.length;
// 값을 얻어내기 위해 종료 인덱스 추출
endIndex = cookie.indexOf( ";", startIndex );
// 만약 종료 인덱스를 못찾게 되면 쿠키 전체길이로 설정
if( endIndex == -1) endIndex = cookie.length;
// 쿠키값을 추출하여 리턴
return unescape( cookie.substring( startIndex + 1, endIndex ) );
}
else
{
// 쿠키 내에 해당 쿠키가 존재하지 않을 경우
return false;
}
}
else
{
// 쿠키 자체가 없을 경우
return false;
}
}
/**
* 쿠키 설정
* @param cookieName 쿠키명
* @param cookieValue 쿠키값
* @param expireDay 쿠키 유효날짜
*/
function setCookie( cookieName, cookieValue, expireDate )
{
var today = new Date();
today.setDate( today.getDate() + parseInt( expireDate ) );
document.cookie = cookieName + "=" + escape( cookieValue ) + "; path=/; expires=" + today.toGMTString() + ";";
}
/**
* 쿠키 삭제
* @param cookieName 삭제할 쿠키명
*/
function deleteCookie( cookieName )
{
var expireDate = new Date();
//어제 날짜를 쿠키 소멸 날짜로 설정한다.
expireDate.setDate( expireDate.getDate() - 1 );
document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
}
/**
* 자신이 지정한 값으로 쿠키 설정
*/
function setMyCookie()
{
setCookie( form.setName.value, form.setValue.value, form.expire.value );
viewCookie(); // 전체 쿠키 출력 갱신
}
/**
* 자신이 지정한 쿠키명으로 확인
*/
function getMyCookie()
{
alert( "쿠키 값 : " + getCookie( form.getName.value ) );
}
/**
* 자신이 지정한 쿠키명으로 쿠키 삭제
*/
function deleteMyCookie()
{
deleteCookie( form.deleteName.value );
alert("쿠키가 삭제되었습니다.");
viewCookie();
}
/**
* 전체 쿠키 출력
*/
function viewCookie()
{
if( document.cookie.length > 0 )
cookieOut.innerText = document.cookie;
else
cookieOut.innerText = "저장된 쿠키가 없습니다.";
}
</SCRIPT>
</HEAD>
<BODY onLoad = "viewCookie()">
<FORM name = "form">
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
<TD bgcolor = "#666666">
<TABLE cellpadding = "0" cellspacing = "1">
<TR height = "25">
<TD align = "center"><FONT color = "#ffffff">쿠키 설정</FONT></TD>
</TR>
<TR>
<TD bgcolor = "#ffffff" align = "center">
쿠키명 : <INPUT type = "text" name = "setName"><BR>
쿠키값 : <INPUT type = "text" name = "setValue"><BR>
기한 : <INPUT type = "text" name = "expire"><BR>
<INPUT type = "button" onClick = "setMyCookie()" value = "쿠키설정">
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
<TD bgcolor = "#666666">
<TABLE cellpadding = "0" cellspacing = "1">
<TR height = "25">
<TD align = "center"><FONT color = "#ffffff">쿠키 확인</FONT></TD>
</TR>
<TR>
<TD bgcolor = "#ffffff" align = "center">
쿠키명 : <INPUT type = "text" name = "getName"><BR>
<INPUT type = "button" onClick = "getMyCookie()" value = "쿠키확인">
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
<TD bgcolor = "#666666">
<TABLE cellpadding = "0" cellspacing = "1">
<TR height = "25">
<TD align = "center"><FONT color = "#ffffff">쿠키 삭제</FONT></TD>
</TR>
<TR>
<TD bgcolor = "#ffffff" align = "center">
쿠키명 : <INPUT type = "text" name = "deleteName"><BR>
<INPUT type = "button" onClick = "deleteMyCookie()" value = "쿠키삭제">
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<BR>
<TABLE cellpadding = "0" cellspacing = "0">
<TR>
<TD bgcolor = "#666666">
<TABLE cellpadding = "0" cellspacing = "1">
<TR height = "25">
<TD align = "center"><FONT color = "#ffffff">전체 쿠키</FONT></TD>
</TR>
<TR height = "25">
<TD bgcolor = "#ffffff" align = "center">
<DIV id = "cookieOut"></DIV>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
'DEVELOPMENT > Javascript' 카테고리의 다른 글
[HTML 팁] HTML 소스 정렬 사이트 (0) | 2008.12.27 |
---|---|
[tip] 영문 alert 메세지 (0) | 2008.09.25 |
javascript 디버거 툴 (0) | 2008.08.18 |
클립보드 복사 (0) | 2008.08.18 |
[javascript] dday 구하는 스크립트 (0) | 2008.02.04 |