참고글



쿠키(Cookie)에 한글 데이터 저장하기
쿠키는 ,(콤마), ;(세미콜론), 공백문자를 제외한 ASCII 코드로 구성되기 때문에 값을 저장할시에 한글 사용이 불가능합니다. 만약 한글을 쿠키값으로 생성 후 저장하려고 하면 톰캣의 경우 IllegalArgumentException 예외가 발생하게 됩니다.(쿠키 생성시에는 오류가 발생하지 않습니다. response.addCookie(cookie)를 했을 경우 예외가 발생합니다.)

따라서 한글 데이터를 저장하고 싶은 경우 URL Encoding을 사용하여 ASCII 코드 형태로 저장해주어야 합니다.

인코딩은 java.net.URLEncoder 클래스를 사용합니다.

cookieSave.jsp
<%@ page contentType = "text/html; charset=utf-8" %>                                         
<%@ page import="java.net.URLEncoder"%>
 
<html> 
<head> 
</head> 
<body> 
<%
     Cookie cookie = new Cookie("message", URLEncoder.encode("한글입니다.""UTF-8")); 
     response.addCookie(cookie);
%>
<h1>쿠키 한글로 저장!</h1> 
</body> 
</html> 
cs


cookieSave.jsp 페이지를 호출한 결과입니다.



쿠키는 서버에서 생성 후 HTTP 응답 메시지의 헤더를 통해서 브라우저 측으로 전송되므로 응답 메시지를 봐야 합니다. Ser-Cookie 부분에 인코딩되어진 message 쿠키를 확인할 수 있습니다.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: message=%ED%95%9C%EA%B8%80%EC%9E%85%EB%8B%88%EB%8B%A4.
Content-Type: text/html;charset=utf-8
Content-Length: 94
Date: Mon, 10 Sep 2018 15:46:42 GMT

<html>
<head>
</head>
<body>
<h1>쿠키 한글로 저장!</h1>
</body>
</html>




인코딩하여 저장한 한글 쿠키값 가져오기
쿠키를 저장할 당시에 한글 데이터를 URL 인코딩하였기 때문에 반대로 데이터를 꺼낼때는 URL 디코딩 해주어야 합니다. java.net.URLDecoder 클래스를 사용하여 디코딩합니다.

getCookie.jsp
<%@ page contentType = "text/html; charset=utf-8" %>                                         
<%@page import="java.net.URLDecoder"%> 
 
 
<html> 
<head> 
</head> 
<body> 
<%
     Cookie[] cookies = request.getCookies();
 
 
     for(Cookie cookie : cookies){ 
           String cookieName = cookie.getName();
           String cookieValue = URLDecoder.decode(cookie.getValue(), "UTF-8"); 
%>
           <h1>쿠키이름 - <%= cookieName %>, 쿠키 값 - <%= cookieValue %> </h1> 
<%
     }
%>
</body> 
</html> 
cs


곧바로 getCookie.jsp를 호출하였습니다. getCookie.jsp를 호출하기 이전에 cookieSave.jsp페이지를 호출해 주어야 message 쿠키가 출력됩니다. 쿠키는 서버에 저장되는 세션을 구분하기 위한 세션ID 저장용도로도 사용되므로 톰캣에서 자동으로 만들어준 JSESSIONID라는 쿠키도 출력된것을 볼 수 있습니다. 그리고 그 아래 이전에 한글로 저장되었던 message 쿠키값이 디코딩된 모습도 볼 수 있습니다.


블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,