toggle menu

JSP 정리 - 쿠키

2012. 8. 16. 09:47 JAVA/JSP
쿠키는 내장 객체가 아님. http 패키지에 속해있음.
자주 사용하는 것을 만들어놓은 레퍼런스 객체 -> 내장 객체임.. 그러나 쿠키는 내장 객체가 아님. 
쿠키에 한글은 저장이 불가능하고 영어나 특수문자 등으로 저장한다.

response.addCookie(); 

Cookie cookie[] = request.getCookies(); 

아래 메소드들은 쿠키에 속해있는 메소드들!!

setMaxAge(0) 은 삭제 addCokie를 하기 전에 설정해주어야 한다.
setMaxAge(-1) 은 브라우저를 닫을 때까지.. 이게 기본값.
괄호안의 값은 초단위로 들어가게 됨!! 

setValue(Cookie c)

setPath(String path) 쿠키가 유효한 디렉토리를 설정 가능.. 



response.addCookie(new Cookie("ID", "eu81273"));

위와 같이 사용하게 되는데, 실제 HTML 헤더상에는
Set-Cookie: ID=eu81273
이런 식으로 기록되어 전달되게 된다.

이제 쿠키값을 다시 가져오려면,

Cookie cookies[] = request.getCookies();
cookies[0].getName();
cookies[0].getValue();


여러 도메인에서 활용하기 위해서는
setDomain(".korea.com");
이런 식으로 할 수 있다.



삭제할 때는 Cookie cookie = new Cookie("지울 이름", "값은 아무거나");
를 만들어서 response.add(cookie) 로 다시 저장함으로써 지운다.
그러나 setPath 등의 파라메터까지 동일해야 같은 쿠키로 인식하므로 이 점을 주의해야 한다.



<%@ 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>

<%!
	public Cookie mySearchCookie(Cookie [] cookies, String searchKey)
	{
		Cookie cookie = null;
		
		for(Cookie c : cookies)
		{
			if(c.getName().equals(searchKey))
			{
				cookie = c;
				break;
			}
		}
		
		return cookie;				
	}

%>

	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>쿠키검색</title>
		
		<style></style>

		<script type="text/javascript">
		
		function cookie_add()
		{
			if(document.cookie_add_form.id_.value.length == 0)
			{
				window.alert('값을 입력해주세요!');
				document.cookie_add_form.id_.focus();
			}
			else if(document.cookie_add_form.value_.value.length == 0)
			{
				window.alert('값을 입력해주세요!');
				document.cookie_add_form.value_.focus();
			}
			else
			{
				return true;
			}
			
			return false;
		}
		
		function cookie_search()
		{
			if(document.cookie_search_form.searchkey.value.length == 0)
			{
				window.alert('값을 입력해주세요!');
				document.cookie_add_form.searchkey.focus();
			}
			else
			{
				return true;
			}
			
			return false;
		}
		</script>

	</head>
	
	<body>
	
	<form name="cookie_add_form" method="post" action="cookie_search.jsp" OnSubmit="return cookie_add()">
	ID<input type="text" name="id_" maxlength="10">___VALUE<input type="text" name="value_" maxlength="10">___<input type="submit" value="쿠키생성">	
	</form>
	
<%
	if(request.getParameter("id_") != null  && request.getParameter("value_") != null )
	{
		Cookie cookie = new Cookie(request.getParameter("id_").trim(), request.getParameter("value_").trim());
		response.addCookie(cookie);
		
		out.write("총 " + request.getCookies().length + "개의 쿠키가 추가되었습니다.");
	}
%>

	<br>
	<br>
	
	<form name="cookie_search_form" method="post" action="cookie_search.jsp" OnSubmit="return cookie_search()">
	ID<input type="text" name="searchkey" maxlength="10">___<input type="submit" value="쿠키검색">	
	</form>

	
<%
	if( request.getParameter("searchkey") != null )
	{
		Cookie cookie = mySearchCookie(request.getCookies(), request.getParameter("searchkey").trim());
		
		if( cookie != null )
		{
			out.write("결과 : " + cookie.getValue());
		}
		else
		{
			out.write("결과 :해당 검색어에 대한 결과가 없습니다.");
		}
	}
%>	

	<br>
	<br>
	<br>
	
	<form name="cookie_reset_form" method="post" action="cookie_search.jsp"><input type="hidden" name="cookie_reset" value="cookie_reset"><input type="submit" value="쿠키리셋"></form>
	
	<br>
	
<%

	if(request.getParameter("cookie_reset") != null)
	{
		for(Cookie cookie : request.getCookies())
		{
			cookie.setMaxAge(0);
			response.addCookie(cookie);			
		}
		
		out.write("쿠키가 리셋되었습니다.");
	}

%>


	</body>
</html>

JAVA/JSP 관련 포스팅 더보기