cookie.setMAXAge();
1.正数:设置cookie存储秒数
2.0:立即删除
3.-1:关闭浏览器删除
#遇到的问题:
建立一个cookie后,再把值设为0,并没有删除这个cookie;
参考:https://blog.csdn.net/machinecat0898/article/details/23603493
本次没有设置domain。所以设置时只需要设置path即可
package cn.itcast;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
@WebServlet( "/cookieDemoServlet")
public class CookieDemoServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
//获取cookie数组;
Cookie[] cookies=request.getCookies();
String msg="";
boolean flag=false;
response.setContentType("text/html;charset=utf-8");
if(cookies!=null&&cookies.length>0){
for(Cookie cookie:cookies){
if(cookie.getName().equals("lastTime")){
String value=cookie.getValue();
value= URLDecoder.decode(value,"utf-8");
msg="欢迎回来,上次访问时间为"+value;
flag=true;
Date date=new Date();
//获取当前时间。
//涉及到时区转换问题,date获取的是美国时间,通过simpleDateFormat进行转换成中国时间,格式如引号内所示,字母不能改变,
//此外,dd日和 HH之间存在的空格,而cookie中不能存储特殊字符,所以需要进行URL编码,保存空格
// 提取时在进行解码,还原内容
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String newDate=simpleDateFormat.format(date);
newDate= URLEncoder.encode(newDate,"utf-8");
cookie.setValue(newDate);
cookie.setMaxAge(60*60*24);//设置存储秒数;
cookie.setPath("/");
response.addCookie(cookie);
//response信息写入方式
response.getWriter().write("<h1>欢迎回来,上次访问时间为"+value+"</h1>");
break;
}
}
}
if(flag==false||cookies==null||cookies.length==0){
Date date=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String newDate=simpleDateFormat.format(date);
newDate= URLEncoder.encode(newDate,"utf-8");
Cookie cookie=new Cookie("lastTime",newDate);
cookie.setMaxAge(1);
cookie.setPath("/");
response.addCookie(cookie);
response.getWriter().write("<h1>欢迎首次登录!</h1>");
}
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}