从servlet,如何设置永不过期的Cookie?

时间:2015-04-11 04:40:03

标签: java java-ee servlets cookies

从servlet中,我如何设置一个永不过期的cookie?

我试过这样做:

Cookie cookie = new Cookie("xyz","");
cookie.setMaxAge(-1);

但是当我这样做时,它会在用户关闭浏览器后立即过期。

2 个答案:

答案 0 :(得分:13)

如果您使用否定号码致电setMaxAge()(或根本不致电),则Cookie将在用户浏览器会话结束时到期。来自the documentation

  

负值表示cookie不会持久存储,并在Web浏览器退出时被删除。

Cookie的典型方法,从来没有"到期是将到期时间设置为未来的一些远期。例如:

cookie.setMaxAge(60 * 60 * 24 * 365 * 10);

将未来的过期时间设置为10年。用户很可能会在未来10年内清除他们的cookie(或者可能只是获得一台新计算机),因此这与指定它永远不会过期有效。

请记住,Cookie实际上并没有最大年龄的概念&#34 ;;实际实现的方式是Java将指定的秒数添加到服务器的当前系统时间,然后将该时间作为cookie的到期时间发送。因此,服务器时间和客户端时间之间的大量不匹配会使事情变得复杂 - 您可以做的最好(至少,很容易)确保您的服务器时钟设置正确并希望客户端'时钟设定。

答案 1 :(得分:1)

设置最长期限:您使用setMaxAge指定Cookie应该有效的时间长度(以秒为单位)。以下将设置一个24小时的cookie。

cookie.setMaxAge(60*60*24);