从servlet中,我如何设置一个永不过期的cookie?
我试过这样做:
Cookie cookie = new Cookie("xyz","");
cookie.setMaxAge(-1);
但是当我这样做时,它会在用户关闭浏览器后立即过期。
答案 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);