Cookie的生命周期

Posted Rubyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie的生命周期相关的知识,希望对你有一定的参考价值。

今日有个疑问,Cookie会在客户端存活多久呢?so查了下,so记个笔记吧。

默认情况下,Cookie只在浏览器内存中存活,就是说当关闭浏览器后,Cookie就会消失!记住这只是默认情况下!

那么非默认情况呢?是不是可以存活的更久呢?存在哪里呢?

Cookie有个setMaxAge(int expiry)方法,是用来设置Cookie的存活时间的。参数expiry表示Cookie存活的秒数。
有以下几种情况:
1、cookie.setMaxAge(60*60):表示cookie对象可存活1小时。这样设置后,即使关闭浏览器即使重启客户端电脑,cookie也会存活1小时。因为只要当maxAge大于0时,浏览器不仅会把cookie保存在浏览器内存中,还会把cookie保存在客户端硬盘上。
2、cookie.setMaxAge(-1):cookie的maxAge默认值就是-1(只要是小于0都是一个意思的),表示只在浏览器内存中存活。一旦浏览器关闭,cookie就会消失。
3、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的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

在不存在的片段上调用片段生命周期和 onCreate 的问题

Android片段生命周期:onResume调用了两次

导航上的片段生命周期重叠

Laravel cookie 会话生命周期

Android 片段生命周期

如何调整cookie的生命周期