除了通过提供 HTTP 请求之外,还有其他方法可以重置 HTTPSession
的超时计数器吗?
我正在寻找类似的东西
session.resetTimeout();
最佳答案
所以,您手头有一个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当它的值偏离默认值时,它会在每次请求时再次将其重置为默认的最大非 Activity 间隔。
session.setMaxInactiveInterval(defaultMaxInactiveInterval);
在 Servlet 3.0 上,这个值可以通过 SessionCookieConfig#getMaxAge()
获得.
int defaultMaxInactiveInterval = getServletContext().getSessionCookieConfig().getMaxAge();
关于java - 如何重置 HTTPSession 的超时计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13233299/