3

HTTPSession除了通过提供 HTTP 请求之外,还有其他方法可以重置超时计数器吗?

我正在寻找类似的东西

session.resetTimeout();
4

1 回答 1

3

所以,你HttpSession手头没有混凝土HttpServletRequest

可以使用当前非活动时间和最大非活动时间之和来增加最大非活动时间间隔

int maxInactiveInterval = session.getMaxInactiveInterval();
int currentInactiveTime = (int) (System.currentTimeMillis() - session.getLastAccessedTime() / 1000);
session.setMaxInactiveInterval(maxInactiveInterval + currentInactiveTime);

但是,这需要一些过滤器,当它的值偏离默认值时,它会在每个请求上再次将其重置回默认的最大非活动间隔。

session.setMaxInactiveInterval(defaultMaxInactiveInterval);

在 Servlet 3.0 上,此值可通过SessionCookieConfig#getMaxAge().

int defaultMaxInactiveInterval = getServletContext().getSessionCookieConfig().getMaxAge();
于 2012-11-05T13:47:23.273 回答