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