java servlet / jsp有没有办法确定网络服务器的会话超时(以秒,分钟等为准)?我尝试查看HttpSession和System API,但没有看到任何用于确定Web服务器会话超时的属性。我知道这个值是在web.xml中设置的,但我正在设计一个需要通过代码来确定这个值的java库。
注意:我正在设计通用网络服务器,不能依赖供应商特定的扩展程序。
答案 0 :(得分:10)
HttpSession.getMaxInactiveInterval
提供此值
int getMaxInactiveInterval()
返回servlet容器在客户端访问之间保持此会话打开的最长时间间隔(以秒为单位)。后 此间隔,servlet容器将使会话无效。该 可以使用setMaxInactiveInterval设置最大时间间隔 方法
返回值为零或更小表示会话永远不会超时。
返回: 一个整数,指定此会话在客户端请求之间保持打开的秒数
答案 1 :(得分:5)
在Servlet中使用:
int timeoutInSeconds = request.getSession().getMaxInactiveInterval();
在JSP中使用:
<p>Timeout in seconds: ${pageContext.session.maxInactiveInterval}</p>
答案 2 :(得分:2)
会话的超时由空闲时间决定,因此无法知道何时超时。
但是,如果没有访问会话,您可以计算下一个可能的超时,
Date expiry = new Date(session.getLastAccessedTime() + session.getMaxInactiveInterval()*1000);
答案 3 :(得分:1)
这是获取超时值的代码:
<%= session.getMaxInactiveInterval() %>
答案 4 :(得分:0)
您可以在会话对象上调用getMaxInactiveInterval。