在练习cookie知识点时,新建一个cookie对象,想将日期设置为cookie对象的value值时,出现以下问题
java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
IllegalArgumentException:非法参数异常
character [32]:ASCII码代表空格的意思
从网上搜索得知,Tomcat9.0版本以上,对Cookie对象设置value值时,包含空格字符便会抛出此异常。具体原因以及还有哪些字符不能包含还未清楚。所以需要修改日期的格式。
修改前的代码:
Cookie c=new Cookie("LastVisit",date.toLocaleString());
response.addCookie(c);
由于toLocaleString()方法被抛弃,然后修改成如下
Date date = new Date();
DateFormat df = DateFormat.getDateTimeInstance();
Cookie c = new Cookie("LastVisit",df.format(date));
response.addCookie(c);
Java官方推荐使用DateFormat对日期类型Date进行格式化,常见的日期格式类型可通过DateFormat中的方法获得。但是由于DateFormat的自带方法得到的格式(显示时分秒)都包含空格,所以使用继承了DateFormat的子类SimpleDateFormat