0

我有一个在 WebLogic 服务器上运行的标准 J2EE Web 应用程序。我想通过 web.xml 中的元数据设置来处理会话超时。我尝试使用以下设置

<error-page>
    <error-code>408</error-code>
    <location>/jsp/testErrorPage.jsp</location>
  </error-page>

然而它没有用。

4

2 回答 2

1

下面是408请求超时的解释,

Web 服务器(运行网站)认为之间的时间间隔太长

  1. 在客户端(例如您的 Web 浏览器或我们的 CheckUpDown 机器人)和服务器之间建立 IP 连接(套接字)和
  2. 收到该套接字上的任何数据,因此服务器已断开连接。

例如,假设您正在尝试登录。但是,由于某些原因,没有收到任何数据。然后是 408 请求超时。

但是在您的情况下,您正在尝试处理会话超时。这意味着,客户端在特定时间段内(例如,30 分钟)没有与服务器建立连接。意思是,你闲置了 30 分钟没有做任何活动。这就是会话超时的含义。

要处理会话超时,您的 web.xml 中必须包含以下代码

<session-config>
    <session-timeout>30</session-timeout>
</session-config>

上面的代码表明如果你闲置 30 分钟,你的会话将被销毁。

此外,您必须编写一个实现HttpSessionListener的自定义侦听器,并将其配置为您的侦听web.xml器。 此代码将在会话超时时执行。您可以尝试在HttpSessionListener#sessionDestroyed方法中重定向到您的错误页面。

如果此解决方案不是您想要的,而是您正在寻找实际解决 408 错误的根本原因,那么修复 408 错误页面可能会有所帮助。

于 2013-08-07T17:12:26.890 回答
0

会话超时是服务器端事件,没有直接的方法来通知浏览器服务器端会话超时。意思是,浏览器在没有任何请求的情况下无法获得响应。这就是 HTTP 的工作原理。

这通常实现的方式之一如下:

  1. 在浏览器上有一些基于 javascript 的功能,它通过 Ajax 调用定期检查服务器端会话。
  2. 如果会话仍然有效,则什么也不做。
  3. 如果会话超时,则将用户重定向到所需页面。
于 2013-08-08T10:58:51.673 回答