切记:设置了**cookie的属性后一定要addCookie()**才能生效。
tomcat8.0之后cookie仍然无法存放特殊字符,例如空格、@、%、:(冒号)等等。
例子:
String format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
Cookie cookie = new Cookie("lastAccess",format);
上述例子会无法生成cookie,因为它无法识别dd和hh之间的空格和:(冒号),此时需要用URL转码器来实现转码,将空格转化为字符串。
更改后的例子:
String format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
String encode = URLEncoder.encode(format,"UTF-8");
Cookie cookie = new Cookie("lastAccess",encode);
经过URLEncoder的转码后即可存入cookie,但是空格和冒号仍然是字符串格式,所以如果要取出原本格式的字符串,还必须要用URLDecode解码后才行。
未解码时的输出:
解码方式:URLDecoder.decode(LastAccessTime,”UTF-8”)
out.println("上次访问时间:"+URLDecoder.decode(LastAccessTime,"UTF-8"));
解码后的输出:
切记:设置了**cookie的属性后一定要addCookie()**才能生效。
Cookie cookie = new Cookie("autologin","");
response.addCookie(cookie);
response.sendRedirect("/login.jsp");