[서블릿/JSP] 톰캣 쿠키(Cookie)에 한글 저장시 Control character in cookie value or attribute 오류
Servlet&Jsp 2018. 9. 11. 04:00톰캣 환경에서 쿠키에 한글 저장시 오류가 나는 경우
Servlet/JSP 톰캣 환경에서 쿠키값으로 한글을 저장하려는 경우 다음과 같은 오류가 발생할 것입니다. 오류 내용으로는 들어가서는 안될 문자값이 쿠키 값으로 들어갔다는 것입니다.
Stacktrace:] with root cause
java.lang.IllegalArgumentException: Control character in cookie value or attribute.
at org.apache.tomcat.util.http.LegacyCookieProcessor.needsQuotes(LegacyCookieProcessor.java:412)
at org.apache.tomcat.util.http.LegacyCookieProcessor.generateHeader(LegacyCookieProcessor.java:284)
at org.apache.catalina.connector.Response.generateCookieString(Response.java:940)
at org.apache.catalina.connector.Response.addCookie(Response.java:888)
at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:392)
at org.apache.jsp.beanTest_jsp._jspService(beanTest_jsp.java:117)
아마 여러분은 이런식으로 쿠키를 저장했을것입니다. 그러나 쿠키는 몇몇 문자를 제외한 ASCII 코드만을 이름과 값으로 사용할 수 있습니다.
<%
Cookie cookie = new Cookie("message", "한글입니다.");
response.addCookie(cookie);
%> |
cs |
따라서 java.net.URLEncoder 클래스를 사용하여 쿠키값을 인코딩 해주어야 합니다. java.net.URLEncoder 클래스를 page 디렉티브를 사용하여 import하고 UTF-8로 인코딩하여 저장하면 오류가 발생하지 않습니다.
<%
Cookie cookie = new Cookie("message", URLEncoder.encode("한글입니다.", "UTF-8"));
response.addCookie(cookie);
%>
|
cs |
더욱 자세한 내용은 다음글을 참고합니다.
'Servlet&Jsp' 카테고리의 다른 글
[서블릿/JSP] Servlet/JSP 환경에서 쿠키(Cookie) 사용 방법 (0) | 2018.09.12 |
---|---|
[서블릿/JSP] 쿠키(Cookie)에 한글 데이터 저장하고 가져오기 (0) | 2018.09.11 |
[서블릿/JSP] 자바빈(Java Beans)이란? <jsp:useBean> 액션 태그로 빈 객체 생성하기 (0) | 2018.09.06 |
[서블릿/JSP] 자바빈(Java Beans)의 속성을 다뤄보자. <jsp:setProperty>와 <jsp:getProperty> 액션태그 (0) | 2018.09.06 |
[서블릿/JSP] include 또는 forward시에 request 객체를 통해 데이터 공유하기 (0) | 2018.09.03 |