如何重置HTTPSession的超时计数器?

时间:2012-11-05 13:40:31

标签: java servlets httpsession

除了通过提供HTTP请求之外,有没有办法重置HTTPSession的超时计数器?

我正在寻找像

这样的东西
session.resetTimeout();

1 个答案:

答案 0 :(得分:3)

那么,你手头有HttpSession而没有具体的HttpServletRequest

可以使用max inactive intervalcurrent inactive time的总和来增加max inactive interval

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

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

session.setMaxInactiveInterval(defaultMaxInactiveInterval);

在Servlet 3.0上,此值可由SessionCookieConfig#getMaxAge()获得。

int defaultMaxInactiveInterval = getServletContext().getSessionCookieConfig().getMaxAge();