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();//쿠키를 쌍으로 저장하는 맵
public CookieBox(HttpServletRequest request) { //생성자, 인자로 request를 받는다
Cookie[] cookies = request.getCookies();//인자로 받은 request로부터 쿠키배열을 읽어 온다.
if (cookies != null) {//배열에 값이 있다면
for (int i = 0 ; i < cookies.length ; i++) {//그 길이만큼 반복하면서
cookieMap.put(cookies[i].getName(), cookies[i]);//쿠키맵에 쌍으로 저장시킨다.
}
}
}
public static Cookie createCookie(String name, String value)//name 와 value의 인자를 받는다
throws IOException {
return new Cookie(name, URLEncoder.encode(value, "euc-kr"));//쿠키를 생성하여 리턴한다., 인자 둘
}
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;
}
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;
}
public Cookie getCookie(String name) {//전달받은 인자의 이름을 가지는 쿠키를 반환
return (Cookie)cookieMap.get(name);
}
public String getValue(String name) throws IOException {//전달받은 인자의 이름을 가지는 쿠키를 구한후 그 쿠키의 value를 반환
Cookie cookie = (Cookie)cookieMap.get(name);
if (cookie == null) return null;
return URLDecoder.decode(cookie.getValue(), "euc-kr");
}
public boolean exists(String name) {
return cookieMap.get(name) != null;//전달받은 인자의 이름을 가지는 쿠키의 존재유무를 리턴
}
}
////////////////////////////////////////////////////////////////////////////////
위의 자바파일을 사용하여 쿠키를 생성하는 jsp
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import = "jsp.util.CookieBox" %>
<%
response.addCookie(CookieBox.createCookie("name", "최범균"));
response.addCookie(
CookieBox.createCookie("id", "madvirus", "/chap09", -1));
%>
CookieBox사용예
CookieBox를 사용하여 쿠키 생성
결과페이지..
CookieBox를 사용하여 쿠키 생성
////////////////////////////////////////////////////////////////////////////////
쿠키 생성 결과를 보여준다.
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import = "jsp.util.CookieBox" %>
<%
CookieBox cookieBox = new CookieBox(request);
%>
Cookie 사용
name 쿠키 = <%= cookieBox.getValue("name") %>
<% if (cookieBox.exists("id")) { %>
id 쿠키 = <%= cookieBox.getValue("id") %>
<% } %>
우선 request 객체로부터 쿠키정보를 읽어온다.(request는 내부 객체.
앞에서 애기했듯이 한번의 요청에 값을 저장할 수 있다..흐름이 맞다면
공통으로 사용할 수 있다.)
name의 쿠키의 값과 id의 쿠키의 값을 뿌린다.
728x90
반응형