cookie实例---显示上一次访问的时间与java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
创建Cookie,名为lasttime,值为当前时间,添加到response中;
在A.jsp中获取请求中名为lasttime的Cookie;
如果不存在输出“您是第一次访问本站”,如果存在输出“您上一次访问本站的时间是xxx”。
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="java.util.Date" %> 4 <%@ page import="java.text.SimpleDateFormat" %> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 <% 13 Date date = new Date(); 14 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒"); 15 String time = sdf.format(date); 16 Cookie c = new Cookie("lasttime",time); 17 response.addCookie(c); 18 Cookie cs[] = request.getCookies(); 19 boolean tag = false; 20 if(cs != null && cs.length > 0){ 21 for(Cookie ck : cs){ 22 if(ck.getName().equals("lasttime")){ 23 tag = true; 24 out.write("您上一次的访问时间为:" + ck.getValue()); 25 break; 26 } 27 } 28 } 29 if(!tag){ 30 out.write("这是您第一次访问本网站"); 31 } 32 %> 33 </body> 34 </html>
练习时出现了错误java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie value
原因是设置时间格式化时使用了yyyy-MM-dd HH:mm:ss这样的格式,前端和后段之间出现了空格,也就是错误中提到的character [32],而cookie中不能出现空格,更改即可。