从HttpSession对象到期

时间:2017-07-31 18:11:53

标签: java httpsession

我正在尝试从HttpSessionListener捕获sessionDestroyed事件,以检查是否由sessionTimeout触发。

当我正在调试时,我可以看到名为“expiring”的属性,根据文档,此属性用于在内部跳过一些异常。

  

,有效期   我们当前正在处理会话到期,因此绕过某些IllegalStateException测试。   Source

问题是,由于此属性设置为“protected”,我无法检查会话超时是否有效触发了此事件。

我需要捕获此会话超时事件以保存数据库中的记录。

有人可以帮助我吗?

这是我到目前为止所做的:

a % b == 0

2 个答案:

答案 0 :(得分:1)

也许你可以尝试估算它?

Item    Budget
A       900
B       350
C       100
D       0

bDT = structure(list(Item = c("A", "B", "C", "D"), Budget = c(900L, 
350L, 100L, 0L)), .Names = c("Item", "Budget"), row.names = c(NA, 
-4L), class = "data.frame")

答案 1 :(得分:0)

在HTTP协议中,当客户端不再处于活动状态时,没有明确的终止信号。这意味着可用于指示客户端何时不再处于活动状态的唯一机制是超时期限。

会话的默认超时时间由servlet容器定义,可以通过HttpSession接口的getMaxInactiveInterval方法获得。开发人员可以使用HttpSession接口的setMaxInactiveInterval方法更改此超时。这些方法使用的超时时间以秒为单位定义。根据定义,如果会话的超时时间设置为-1,则会话将永不过期。在使用该会话的所有servlet退出服务方法之后,会话失效才会生效。启动会话失效后,新请求必须无法看到该会话。

HttpSession接口的getLastAccessedTime方法允许servlet确定在当前请求之前访问会话的最后时间。当作为会话一部分的请求首先由servlet容器处理时,会认为会话被访问。