除了通过提供HTTP请求之外,有没有办法重置HTTPSession
的超时计数器?
我正在寻找像
这样的东西session.resetTimeout();
答案 0 :(得分:3)
那么,你手头有HttpSession
而没有具体的HttpServletRequest
?
你可以使用max inactive interval和current 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();