Cookie的生命周期

分类: 英国365bet官方 发布时间: 2025-07-05 21:53:13 作者: admin 阅读: 6287

今日有个疑问,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);

}

}