加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用web.xml和setMaxInactiveInterval设置会话超时之间

发布时间:2020-12-15 04:22:53 所属栏目:Java 来源:网络整理
导读:我要求用户在会话中进行身份验证,并且在10分钟不活动后,会话超时.会话超时后,来自当前过期会话的任何进一步请求将重定向到超时页面.我在这方面进行了研究,得出了两种不同的方法. 方法#1: 在web.xml中,我有下面提到的代码…… session-config session-timeou
我要求用户在会话中进行身份验证,并且在10分钟不活动后,会话超时.会话超时后,来自当前过期会话的任何进一步请求将重定向到超时页面.我在这方面进行了研究,得出了两种不同的方法.

方法#1:

在web.xml中,我有下面提到的代码……

<session-config>
     <session-timeout>10</session-timeout>
</session-config>

方法#2:

我在经过身份验证的页面中有下面提到的代码…

response.setHeader("Cache-Control","no-cache,no-store,must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma","no-cache"); // HTTP 1.0.
response.setDateHeader("Expires",0); // Proxies.
request.getSession().setMaxInactiveInterval(600);

现在我的问题是这两种方法有什么区别?哪一个更好还是推荐?而且当使用方法#2时,如果最终用户导航离开经过身份验证的页面但尚未注销,那么会话在10分钟不活动后仍会超时吗?

解决方法

可以在各个级别设置会话超时:

>在应用程序服务器中,通常有默认设置,可以更改 – 它是所有应用程序或给定应用程序的默认设置(取决于服务器配置功能).
>然后在应用程序描述符中 – 您可以使用web.xml覆盖它 – 它将用于给定应用程序中的所有会话
>然后在应用程序代码中 – 您可以使用session.setMaxInactiveInterval()覆盖它,它将仅被覆盖该会话

正如Roman所写,无论你如何设置它,当超时到期时容器都会使它无效.

您应该避免使用编程方法(最后一个),因为很容易错过某个会话并且它将获得默认超时,并且您将具有不一致的行为.如果要确保给定超时(业务要求)并且不希望依赖服务器功能,请使用web.xml.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读