頭大?An invalid character [32] was present in the Cookie value
阿新 • • 發佈:2018-11-27
在跟著demo學習時,測試的時候遇到這個問題:
Type Exception Report Message An invalid character [32] was present in the Cookie value Description The server encountered an unexpected condition that prevented it from fulfilling the request. Exception java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value org.apache.tomcat.util.http.Rfc6265CookieProcessor.validateCookieValue(Rfc6265CookieProcessor.java:182) org.apache.tomcat.util.http.Rfc6265CookieProcessor.generateHeader(Rfc6265CookieProcessor.java:115) org.apache.catalina.connector.Response.generateCookieString(Response.java:1019) org.apache.catalina.connector.Response.addCookie(Response.java:967) org.apache.catalina.connector.ResponseFacade.addCookie(ResponseFacade.java:386) com.itheima.lastaccesstime.LastAccessTimeServlet.doGet(LastAccessTimeServlet.java:26) javax.servlet.http.HttpServlet.service(HttpServlet.java:635) javax.servlet.http.HttpServlet.service(HttpServlet.java:742) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) Note The full stack trace of the root cause is available in the server logs. Apache Tomcat/8.5.23
異常報在:
response.addCookie(cookie);
這一行!
cookie這個物件儲存的是:
"yyyy-MM-dd hh:mm:ss"
這個格式的字串,那麼在查詢相關資料後,有提到:name引數不能儲存含有逗號、分號、美元($)、空格等符號,否則會出現:
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
這個異常!
所以,在我們獲得當前時間:
Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String currentTime = sdf.format(date); //1、建立Cookie 記錄當前的最新的訪問時間 Cookie cookie = new Cookie("lastAccessTime",currentTime);
時間的時候,有格式化輸出yyyy-MM-dd hh:mm:ss,那麼,在這裡面就包含了一個 (空格),所以會報這個異常!
解決思路:去掉空格,用其他合法的符號代替!比如就用個 - 吧!
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
執行一下:
您上次的訪問的時間是:2018-10-23-11:23:00
解決了!