概述
Cookie会在客户端存活多久呢?这就是Cookie的生命了。默认情况下,Cookie只在浏览器的内存中存活,也就是说,当你关闭浏览器后,Cookie就会消失!
可以使用Cookie#setMaxAge(int expiry)来设置Cookie的存活时间。参数expiry表示Cookie存活的秒数。
cookie.setMaxAge(60*60):表示cookie对象可存活1小时。就算关闭浏览器,就算重启客户端电脑,cookie也会存活1小时。因为当maxAge大于0时,浏览器不仅会把cookie保存在浏览器内存中,还会把cookie保存到硬盘上。
cookie.setMaxAge(-1):cookie的maxAge属性的默认值就是-1(其实只要是负数都是一个意思),表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么cookie就会消失。
cookie.setMaxAge(0):cookie被作废!表示cookie即不在内存中存活,也不在硬盘上存活,这样的cookie设置只有一个目的,那就是覆盖客户端原来的这个cookie,使其作废。
代码示例: public class RegistServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); //获取用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password");
System.out.println("用户名:"+username); System.out.println("密码:"+password);
//创建cookie对象,将用户名和密码连接存储,使用逗号分开 Cookie cookie = new Cookie("userpass", username+","+password); //设置cookie的存活时间,里面的参数是以秒为单位 //cookie.setMaxAge(60*60); //如果maxAge设置成-1代表是当前cookie的销毁时间是浏览器关闭,和默认是一样的 //cookie.setMaxAge(-1); //如果maxAge设置成0代表删除已经存在的和当前同名的cookie cookie.setMaxAge(0); //把cookie写入浏览器 response.addCookie(cookie);
//跳转页面 request.getRequestDispatcher("/regist1.html").forward(request, response); }
} |
设置Cookie对象的有效时间, setMaxAge()方法便可以设置Cookie对象的有效时间,
例如:Cookie c = new Cookie(“username”,”john”);
c.setMaxAge(60);//60秒的意思
c.setMaxAge(60*60);//一小时
c.setMaxAge(365*24*60*60);//一年
如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。
这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。
cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie
cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。
最后
以上就是大意机器猫为你收集整理的Cookie的生命周期问题的全部内容,希望文章能够帮你解决Cookie的生命周期问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复