쿠키(Cookie)는 사용자의 로컬저장소에 정보를 저장하여 다음에 같은 요청을 받아 수행할 시 해당 정보를 불러오는 방식으로 서버의 저장소에 대한 부담을 줄일 수 있는 하나의 방법입니다.따라서 기존의 session보다 저장 기간이 길어지게 됩니다. 또한 기존의 정보를 저장하고 보여주는 방식이니 처리속도 또한 올라가게 됩니다. 다음의 쿠키 생성을 통해 더욱 자세히 설명드리도록 하겠습니다.
String ip = reqeust.getRemoteAddr();
Cookie c1 = new Cookie("ipaddr", ip);
c1.setMaxAge(60 * 60 * 24 * 7 ) // 일주일 동안 유지됨을 의미
response.addCookie(c1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_hh:mm");
Date date = new Date();
String lastAccessedTime = sdf.format(date);
lastAccessedTime = URLEncoder.encode(lastAccessedTime, "UTF-8");
Cookie c2 = new Cookie("lmt", lastAccessedTime);
cw.setMaxAge(60 * 60 * 24 * 7);
response.addCookie(c2);
response.sendRedirect("ex02_cookie_check.jsp");
문자열 key값을 넣어주고 뒤에 문자열 value 값을 넣어 Cookie를 생성하게 됩니다.생성 후 해당 객체에 setMaxAge(시간(초단위))를 입력하여 해당 쿠키의 유효시간을 정해줄 수도 있습니다. 이렇게 생성된 쿠키를 출력하는 구문은 다음과 같습니다.
Cookie[] cs = request.getCookies();
for(int i = 0; cs != null && i < cs.length; i++) {
Cookie c = cs[i];
String name = c.getName();
String value = c.getValue();
value = URLDecoder.decode(value, "UTF-8");
out.println("<li>" + name + " : " + value + "</li>");
}
<※ 결과는 다음과 같습니다.>
Cookie c1 = new Cookie("ipaddr", null); // 이전 객체와 같은 이름의 객체를 생성하고
Cookie c2 = new Cookie("lmt", ""); // 아무런 값이나 넣어준 뒤
// 유효시간을 '0'으로 설정하여
c1.setMaxAge(0);
c2.setMaxAge(0);
// 응답을 통해 덮어씌움
response.addCookie(c1);
response.addCookie(c2);