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

我正在寻找类似的东西

session.resetTimeout();

最佳答案

那么,您手头有 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 当它的值从默认值关闭时,它会在每次请求时再次将其重置回默认的最大非 Activity 间隔。
session.setMaxInactiveInterval(defaultMaxInactiveInterval);

在 Servlet 3.0 上,此值可通过 SessionCookieConfig#getMaxAge() 获得。
int defaultMaxInactiveInterval = getServletContext().getSessionCookieConfig().getMaxAge();

关于java - 如何重置 HTTPSession 的超时计数器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13233299/

10-13 01:15