Boa noite a todos
Estou com uma dúvida sobre a utilização de cookies.
Tenho meu servlet com o ContentType como “text/html;charset=UTF-8” e estou utilizando cookies na aplicação.
Mas quando adiciono um cookie que tem acento em alguma das letras ocorre o seguinte erro na aplicação:
15/03/2010 23:44:44 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ServletLogin threw exception
java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value
at org.apache.tomcat.util.http.ServerCookie.maybeQuote2(ServerCookie.java:396)
at org.apache.tomcat.util.http.ServerCookie.maybeQuote2(ServerCookie.java:389)
at org.apache.tomcat.util.http.ServerCookie.appendCookieValue(ServerCookie.java:293)
at org.apache.catalina.connector.Response.addCookieInternal(Response.java:1010)
at org.apache.catalina.connector.Response.addCookieInternal(Response.java:979)
at org.apache.catalina.connector.Response.addCookie(Response.java:967)
at org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:343)
at org.netbeans.modules.web.monitor.server.MonitorResponseWrapper.addCookie(MonitorResponseWrapper.java:127)
at br.com.webCurric.servlets.ServletLogin.geraCookieLogin(ServletLogin.java:158)
at br.com.webCurric.servlets.ServletLogin.processRequest(ServletLogin.java:63)
at br.com.webCurric.servlets.ServletLogin.doPost(ServletLogin.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
Pelo que pesquisei na internet, o cookie não aceita acento. Isso é correto? Ou posso usar a codificação “ISO” padrão Brasil?
Bom, aqui vai o método que utilizei para adcionar o cookie
public boolean geraCookieLogin(String[] cookieName, String[] cookieValue, int cookieAge, HttpServletResponse response) {
int countCookies = 0;
for (String name: cookieName) {
Cookie cookie = new Cookie(name, cookieValue[countCookies]);
System.out.println("name: " + name + " cookieValue: " + cookieValue[countCookies]);
cookie.setMaxAge(cookieAge);
response.addCookie(cookie);
countCookies++;
}
return true;
}