【问题标题】:Programmatically Determine Java Session Timeout以编程方式确定 Java 会话超时
【发布时间】:2009-12-16 14:44:20
【问题描述】:

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

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

【问题讨论】:

    标签: java jsp servlets


    【解决方案1】:

    HttpSession.getMaxInactiveInterval 提供此值

    int getMaxInactiveInterval()

    返回 servlet 容器在客户端访问之间保持此会话打开的最大时间间隔(以秒为单位)。后 在这个时间间隔内,servlet 容器将使会话无效。这 可以使用 setMaxInactiveInterval 设置最大时间间隔 方法。

    返回值为零或更小表示会话永远不会超时。

    返回: 一个整数,指定此会话在客户端请求之间保持打开的秒数

    【讨论】:

      【解决方案2】:

      在 Servlet 中使用:

      int timeoutInSeconds = request.getSession().getMaxInactiveInterval();
      

      在 JSP 中使用:

      <p>Timeout in seconds: ${pageContext.session.maxInactiveInterval}</p>
      

      【讨论】:

        【解决方案3】:

        会话的超时由空闲时间决定,因此无法知道它何时会超时。

        但是,假设会话未被访问,您可以计算下一个可能的超时,

        Date expiry = new Date(session.getLastAccessedTime() + session.getMaxInactiveInterval()*1000);
        

         

        【讨论】:

          【解决方案4】:

          这是获取超时值的代码:

          <%= session.getMaxInactiveInterval() %>
          

          【讨论】:

            【解决方案5】:

            您可以在会话对象上调用getMaxInactiveInterval

            【讨论】:

              猜你喜欢
              • 2011-09-04
              • 2012-05-18
              • 2017-09-13
              • 1970-01-01
              • 1970-01-01
              • 2021-04-28
              • 2023-04-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多