Cookie的使用bug!
程序员文章站
2022-04-26 12:05:30
...
今天在学习使用Cookie存取时遇到的问题
在使用Cookie存储当前**时间**时,首先应该想到第一次访问时是没有Cookie数据的。
所以在写了一个工具类用来判断Cookie数组是否有数据,从而达到判断是不是用户第一次进入。
public class CookieUtils {
public static Cookie findCookie(Cookie[] cookies, String name) {
if (cookies == null) {
//浏览器没有携带的话
return null;
} else {
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie;
}
}
//浏览器带回来Cookie但是没有指定名称的Cookie
return null;
}
}
}
之后进行判断
// 判断是否为第一次访问:从指定的Cookie中获取指定名称的Cookie
//获取从浏览器带过来的所有Cookie
Cookie[] cookies = req.getCookies();
//从数组中找指定名称的Cookie
Cookie cookie = CookieUtils.findCookie(cookies, "lastVisit");
//判断是否为第一次访问
if (cookie == null){
//第一次访问
//页面显示一段内容
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().println("<h1>您好!欢迎使用本系统</h1>");
} else {
System.out.println("111");
//不是第一次访问
//获取上一次的访问时间显示到页面
String value = cookie.getValue();//相当于访问时间
System.out.println(value);
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().println("<h1>您好!您的上一次访问时间为: "+value+"</h1>");
}
//记录当前时间
SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = d.format(new Date());
System.out.println(format);
Cookie c=new Cookie("lastVisit",format);
System.out.println(c.toString());
//回写到浏览器
resp.addCookie(c);
但是发现 resp.addCookie(c);没有生效。也没有报错和异常,只是浏览器报500的错误。
第二次请求后Cookie数组还是没有数据的状态
经过一系列的调试发现!resp.addCookie(c);
的使用是不可以使用空格的。
因为我在记载当前日期时使用了
SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
中间的格式设置有空格所以添加不上去。
后面改成了
SimpleDateFormat d=new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
然后解决了问题。
小白的自我经验。希望能帮助到和我一样学习的人。。。
上一篇: iBATIS 3 GA发布