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的生命周期的主要内容,如果未能解决你的问题,请参考以下文章