-
Cookie 처리를 위한 Util Class프로그램/JSP 2007. 11. 16. 16:27
특정 쿠키의 값을 읽어 오기 위한 ...쿠키 처리를 위한 유틸리티 클레스 작성
CookieBox.java
-------------------------------------------------------
package jsp.util;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Cookie;
import java.util.Map;
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.io.IOException;public class CookieBox{
private Map cookieMap= new java.util.HashMap();//쿠키를 <쿠키 이름, Cookie 객체> 쌍으로 저장하는 맵
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]);
}
}
}//CookieBox 클래스의 생성자. CookieBox 클래스의 객체를 생성할때 사용된다.
//인자로 전달 받은 request로부터 Cookie 배열을 읽어 와서,각각의 Cookie 객체를 선언한 cookieMap에 저장한다.
public static Cookie createCookie(String name,String value) throws IOException{
return new Cookie(name,URLEncoder.encode(value,"euc-kr"));
}//이름이 name 이고 값이 value인 Cookie 객체를 생성해서 리턴한다.
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;
}//이름이 name, 값이 value, 도메인이 domain, 경로가 path, 유효시간이 maxAge인 Cookie 객체를 생성해서 리턴한다.
public Cookie getCookie(String name){
return (Cookie)cookieMap.get(name);
}//cookieMap에 저장된 쿠키에서 지정한 이름의 Cookie 객체를 구한다.
//지정한 이름의 쿠키가 존재하지 않으면 null을 리턴한다.
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");
}//cookieMap에 저장된 쿠키에서 지정한 이름의 Cookie 객체를 구한후 그 Cookie객체의 값을 구한다.
//지정한 이름의 쿠키가 존재하지 않으면 null을 리턴한다.
public boolean exists(String name){
return cookieMap.get(name) != null;
}//지정한 이름의 Cookie가 존재할 경우 true, 그렇지 않으면 false를 리턴한다.
//지정한 이름의 쿠키가 존재하지 않으면 null을 리턴한다.
}
------------------------------------------------------------------
[소스 코드 컴파일]
C:\>set CLASSPATH=C:\jakarta-tocat...\..\common\lib\servlet-api.jar
C:\>cd jakarta-tomcat\webapps\chap09\WEB-INF
C:\>.....\WEB-INF>mkdir classes <- 클레스 디렉토리 생성
C:\>.....\WEB-INF>javac -d classes src\jsp\util\CookieBox.java
javac를 실행하는데 다음과 같은 에러 메세지가 나올 수도 있다.
'javac'은(는) 내부 또는 외부 명령,실행할 수 있는 프로그램,또는
배치 파일이 아닙니다.
이 경우 다음의 명령어를 실행한 후에 javac를 실행하면 된다.
C:....\WEB-INF>set PATH=c:\j2sdk1.4.2\bin;%PATH%
javac 명령어까지 모두 올바르게 수행되었다면 WEB-INF\classes\jsp\util폴더에
CookieBox.class 클레스가 생성되었을 것이다. CookieBox.class 클레스가 생성되었다면
CookieBox 클레스를 사용하여 쿠키 처리 코드를 간단하게 작성할 수 있다.
CookieBox.create() 메소드를 사용해서 쿠키를 생성하는 JSP 코드
----------------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import = "chap09.jsp.util.CookieBox" %>
<%
response.addCookie(CookieBox.createCookie("name", "최범균"));
response.addCookie(CookieBox.createCookie("id", "madvirus", "/chap09", -1));
%>
<html>
<head><title>CookieBox사용예</title></head>
<body>CookieBox를 사용하여 쿠키 생성
</body>
</html>
----------------------------------------------------------------
그것을 읽는 페이지
----------------------------------------------------------------
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import = "jsp.util.CookieBox" %>
<%
CookieBox cookieBox = new CookieBox(request);
%>
<html>
<head><title>Cookie 사용</title></head>
<body>name 쿠키 = <%= cookieBox.getValue("name") %> <br>
<% if (cookieBox.exists("id")) { %>
id 쿠키 = <%= cookieBox.getValue("id") %> <br>
<% } %>
</body>
</html>
----------------------------------------------------------------'프로그램 > JSP' 카테고리의 다른 글
package 선언시 javac -d xx yy 컴파일과 useBean에 대해서... (0) 2007.11.20 request.getContextPath() 와 request.getRequestURLI() 의 차이 (0) 2007.11.20 JavaBean <jsp:useBean>,<jspgetProperty> (0) 2007.11.19 Cookie 객체 (0) 2007.11.16 Tomcat ContextRoot (0) 2007.11.16 jspf란 (1) 2007.11.15 <jsp:include> 액션 태그 처리 순서 (0) 2007.11.15