이메일주소 쿠키에 저장하고 불러오기
이메일주소를 ID로 사용하는 사이트에서 로그인 성공 시 userid로 이메일주소를 쿠키에 저장한다.
그리고 나서 ID가 필요한 페이지들에 쿠키에서 그 값을 읽어와 표시해준다.
그런데, 분명 tigerfive@test.com로 쿠키를 생성하였는데, 불러온 값은 tigerfive만 불러온다.
검색을 통해 아래와 같이 URLEncoding, URLDecoding을 이용하여 문제를 해결하였다.
쿠키생성 (javas-ript)
function setCookie4Email(name, value, expDay)
{
var cookieStr = name + "=" + encodeURIComponent(value) + "; path=/;";
if (expDay) {
var dToday = new Date();
dToday.setDate(dToday.getDate() + expDay);
cookieStr += " expires=" + dToday.toGMTString() + ";";
}
document.cookie = cookieStr;
}
쿠키읽기 (jsp)
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
public static String getCookie(HttpServletRequest request, String name) throws UnsupportedEncodingException
{
Cookie[] cookies = request.getCookies();
String value = "";
if (cookies != null) {
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals(name)) {
value = URLDecoder.decode(cookies[i].getValue(), "UTF-8");
break;
}
}
}
return value;
}
사이트의 구조로 쿠키를 읽는 것은 JSP로 처리되었으나 javascript로도 디코딩하면 된다.
추후에 시간이 허락되는데로 테스트 후 javascript버전으로도 올리도록 하겠다.