以编程方式确定Java会话超时

时间:2009-12-16 14:44:21

标签: java jsp servlets

java servlet / jsp有没有办法确定网络服务器的会话超时(以秒,分钟等为准)?我尝试查看HttpSession和System API,但没有看到任何用于确定Web服务器会话超时的属性。我知道这个值是在web.xml中设置的,但我正在设计一个需要通过代码来确定这个值的java库。

注意:我正在设计通用网络服务器,不能依赖供应商特定的扩展程序。

5 个答案:

答案 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