1. setMaxAge
setMaxAge(시간(초))는 Cookie 생성 시 해당 쿠키 객체의 유지 기간을 정해주는 메서드 입니다.
소괄호 안에는 초단위의 시간이 들어가기 때문에 다음과 같이 시간을 정해 줄 수 있습니다.
String ip = request.getRemoteAddr();
Cookie c = new Cookie("ipaddr", ip);
c.setMaxAge(60 * 60 * 24 * 7);
2. URLEncoder, encode
Cookie에는 아스키 문자가 사용 가능합니다.
이 때 사용불가능 문자를 사용하기 위해서는
URLEncoder를 통하여 인코딩하여 사용합니다.
encode는 해당 클래스의 내장 메서드로 인코딩을 하기 위해 사용되며 사용방식은 다음과 같습니다.
<form method="POST">
<p>
<select name="theme">
<option ${theme =='Light Theme' ? 'selected' : '' }>Light Theme</option>
<option ${theme =='Dark Theme' ? 'selected' : '' }>Dark Theme</option>
<option ${theme =='Pink Theme' ? 'selected' : '' }>Pink Theme</option>
</select>
<input type="submit">
</p>
</form>
String theme = request.getParameter("theme");
theme = URLEncoder.encode(theme, "UTF-8");
Cookie c = new Cookie("theme", theme);
c.setMaxAge(60 * 5);
response.addCookie(c);
3. URLDecoder, decode
Cookie를 생성 후 출력하기 전 인코딩되어 있는 값이 저장되어 있다면 URLDecoder클래스를 통하여 디코딩하여 출력합니다.
decode는
URLDecoder 클래스의 내장 메서드로 인코딩을 하기 위해 사용되며 사용방식은 다음과 같습니다.
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>");
}