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

标签 java servlets httpsession

除了通过提供 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/

相关文章:

java - 在不同 portlet 应用程序中的主题和 portlet 之间共享 httpssession

php - HttpSession 是如何实现的?

java - 检查数字是否太大或不是数字

java - 使用 javaSimon 监控 apache james 邮件服务器

使用 Https 连接的 Java 应用程序 :"Connection refused error"

java - 如何知道 Servlet 应用程序中的 Web 应用程序 URL

java - Java HttpSession 属性存储在哪里?

java - WSO2 数据分析服务器上的 SSL 错误

java - 如何在 Nimbus JOSE + JWT 中验证 token 签名

java - 使用 cf-java-client 执行 "cf-push"