何时期望 getLastAccessedTime() 在 HttpSession 中更新

When to expect getLastAccessedTime() to be updated in HttpSession

根据文档,在会话生命周期内每次发出请求时都会更新 getLastAccessedTime()

我的应用程序有一个 Heartbeat servlet,它在用户登录系统并启动重要扫描进程后每分钟调用一次。当用户登录时,会创建一个会话,然后会定期(每分钟)调用 Heartbeat。所以从逻辑上讲,这应该意味着 lastAccessedTime 每分钟更新一次。这个假设正确吗?

接下来,我将会话超时设置为 15 分钟。如果用户处于非活动状态 15 分钟(未 运行 扫描时),会话将被销毁并在 HttpSessionListener 的 sessionDestroyed 方法中被捕获。因此,lastAccessedTime 应该显示该会话是在 15 分钟前准确访问的。唯一不显示的情况是用户自己注销时。

为了清楚起见,使用 lastAccessedTime 来查找用户上次在会话中处于活动状态的时间是否安全。此外,假设会话因不活动而被破坏的时间总是 15 分钟是否安全?

是的,只要请求带有与会话关联的 cookie,getLastAccessedTime() 实际上就会更新。您的假设是正确的,即 lastAccessedTime 每分钟更新一次。

因此,如果您发送心跳,那么从技术上讲,会话始终处于活动状态。

即将达到会话超时值。是的,可以安全地假设会话将因 15 分钟的不活动而被破坏。但是,这绝不是你的情况。