头大?An invalid character [32] was present in the Cookie value

在跟着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

解决了!

猜你喜欢

转载自blog.csdn.net/a_cherry_blossoms/article/details/83304344
今日推荐