我有一个在 WebLogic 服务器上运行的标准 J2EE Web 应用程序。我想通过 web.xml 中的元数据设置来处理会话超时。我尝试使用以下设置
<error-page>
<error-code>408</error-code>
<location>/jsp/testErrorPage.jsp</location>
</error-page>
然而它没有用。
我有一个在 WebLogic 服务器上运行的标准 J2EE Web 应用程序。我想通过 web.xml 中的元数据设置来处理会话超时。我尝试使用以下设置
<error-page>
<error-code>408</error-code>
<location>/jsp/testErrorPage.jsp</location>
</error-page>
然而它没有用。
下面是408请求超时的解释,
Web 服务器(运行网站)认为之间的时间间隔太长
- 在客户端(例如您的 Web 浏览器或我们的 CheckUpDown 机器人)和服务器之间建立 IP 连接(套接字)和
- 收到该套接字上的任何数据,因此服务器已断开连接。
例如,假设您正在尝试登录。但是,由于某些原因,没有收到任何数据。然后是 408 请求超时。
但是在您的情况下,您正在尝试处理会话超时。这意味着,客户端在特定时间段内(例如,30 分钟)没有与服务器建立连接。意思是,你闲置了 30 分钟没有做任何活动。这就是会话超时的含义。
要处理会话超时,您的 web.xml 中必须包含以下代码
<session-config>
<session-timeout>30</session-timeout>
</session-config>
上面的代码表明如果你闲置 30 分钟,你的会话将被销毁。
此外,您必须编写一个实现HttpSessionListener的自定义侦听器,并将其配置为您的侦听web.xml
器。
此代码将在会话超时时执行。您可以尝试在HttpSessionListener#sessionDestroyed
方法中重定向到您的错误页面。
如果此解决方案不是您想要的,而是您正在寻找实际解决 408 错误的根本原因,那么修复 408 错误页面可能会有所帮助。
会话超时是服务器端事件,没有直接的方法来通知浏览器服务器端会话超时。意思是,浏览器在没有任何请求的情况下无法获得响应。这就是 HTTP 的工作原理。
这通常实现的方式之一如下: