Cookie的存活时间

1. 默认情况下,cookie数据保存到内存里,当浏览器关闭后,Cookie数据被销毁


2. 持久化存储:
  setMaxAge(int seconds)
    1. 正数:将Cookie数据写到硬盘的文件中,持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效。

    2. 负数:默认值,即关闭浏览器后,cookie即失效

    3. 零:删除cookie信息

      setMaxAge为正数时的情况如下:

   重启浏览器 不关闭浏览器
cookie时间未到 能访问cookie 能访问cookie
cookie时间到 不能访问cookie 能访问cookie



 

 

 

代码如下:

第一个servlet【比如是CookieDemo01】中的代码如下:

 1 import javax.servlet.http.Cookie;
 2 //--------省略若干代码-----------
 3 protected void doGet(HttpServletRequest request, HttpServletResponse response) 
 4         throws ServletException, IOException {
 5     //1.创建Cookie对象,绑定数据【name是"msg",value是"hello"】
 6     Cookie c = new Cookie("msg", "hello");
 7     //2.设置Cookie存活时间
 8     c.setMaxAge(300);//(1).将Cookie持久化到硬盘,300秒后会自动删除
 9     //c.setMaxAge(-1);//(2).默认值,一次浏览器会话
10     //c.setMaxAge(0);//(3).删除Cookie
11     //3.发送Cookie对象【只有发送Cookie的浏览器可以获取Cookie】
12     response.addCookie(c);
13 }
14 //--------省略若干代码-----------

 

第二个servlet【比如是CookieDemo02】中的代码如下:

 1 import javax.servlet.http.Cookie;
 2 //--------省略若干代码-----------
 3 protected void doGet(HttpServletRequest request, HttpServletResponse response)
 4         throws ServletException, IOException {
 5     //3.获取Cookie
 6     Cookie[] cs = request.getCookies();
 7     //4.遍历Cookies
 8     if(cs!=null){
 9         for(Cookie c:cs){
10             String name = c.getName();
11             String value = c.getValue();
12             System.out.println(name+":"+value);
13         }
14     }
15 }
16 //--------省略若干代码-----------

验证:

打开Tomcat服务器,先运行第一个servlet【创建Cookie,声明Cookie生命周期,发送Cookie】,再运行第二个servlet【获取并遍历Cookie】,发现控制台上输出Cookie的name和value【即msg:hello】。

代码说明:

第一个servlet中:

(1).如果【c.setMaxAge(300)】,cookie会持久化到硬盘300秒,在这300秒内,关闭浏览器后再打开浏览器,也能访问到cookie。如果一直不关闭浏览器,300秒后也能访问。

(2).如果【c.setMaxAge(-1)】,只要浏览器不关闭,cookie不会失效。

(3).如果【c.setMaxAge(0)】,删除cookie信息。

 

说明:

高亮说明

日期:2019-03-07  08:39:31

posted @ 2019-03-07 08:40  孤舟浮岸  阅读(4111)  评论(0编辑  收藏  举报