28

为 Tomcat 为 servlet 会话发送的 JSESSIONID cookie 设置过期日期的最佳方法是什么?

默认情况下,cookie 的过期日期似乎是“会话”,这意味着一旦浏览器重新启动,会话就会在客户端中消失。但我想保持它打开 12 小时,即使在浏览器重新启动后(然后会相应地在服务器中配置会话超时)。

有没有办法在 Tomcat 中设置过期日期,例如使用一些配置选项或扩展模块?或者是否有可靠的方法使用 Servlet 过滤器设置 JSESSIONID 的到期日期?

4

2 回答 2

62

从 Servlet 3.0 开始,这可以简单地在 web.xml 中指定:

<session-config>
    <session-timeout>720</session-timeout> <!-- 720 minutes = 12 hours -->
    <cookie-config>
        <max-age>43200</max-age> <!-- 43200 seconds = 12 hours -->
    </cookie-config>
</session-config>

请注意,session-timeout它以分钟为单位,但max-age以秒为单位。

于 2012-03-27T14:53:41.057 回答
-1

我认为在不更改 Tomcat 代码的情况下不可能做你想做的事。

但是请注意,它可能会产生令人讨厌的副作用:如果用户启动会话并保持活动状态 12 小时,则其会话超时将相应更新(超时将在每次请求时更新),但其 cookie 不会,并且因此,用户将在 12 小时后失去其会话,即使他一直处于活动状态。

于 2011-02-08T13:08:03.790 回答