JSP错误页面会导致问题吗?

时间:2013-02-19 09:55:24

标签: java jsp web web.xml custom-error-pages

java web应用程序中有一个选项可以通过在web.xml中定义error-page来处理异常:

<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>

我想知道定义JSP错误页面是否存在问题(而不是HTML错误页面)。 因为JSP在服务器端运行。是否存在服务器“半死”的情况,抛出异常,尝试重定向到错误页面,但由于“半死”而无法呈现它?

“半死”我的意思是服务器处于某些状态仍然有效的状态,但其他东西不起作用。具体来说,我的意思是无论控制重定向到web.xml中定义的错误页面仍然有效,但JSP的实际呈现由于某种原因不起作用(抛出异常)。

我实际上没有看到这样的问题,但我想知道是否可能。因为那时可能会出现HTML错误页面(因为它没有服务器端逻辑),而JSP错误页面则不起作用。

如果是这种情况,那么当JSP错误页面失败时,如何“回退”到HTML错误页面? 我仍然希望使用JSP错误页面来显示响应中返回的错误详细信息,但如果不可能,那么我想显示HTML页面。

我希望这是有道理的......

2 个答案:

答案 0 :(得分:1)

我找到了解决方案:

  1. 定义错误500以重定向到servlet(而不是页面)
  2. 定义404错误页面 - 将其设为简单的HTML页面。
  3. 在servlet中,重定向到JSP错误500页。
  4. servlet中的所有逻辑都包含一个try-catch块。 catch块执行response.sendError(HttpServletResponse.SC_NOT_FOUND);,它将重定向到web.xml中定义的错误404页面。

答案 1 :(得分:0)

我当然可以设想一种情况,你的error.jsp需要来自服务器的某些功能,而服务器无法满足(例如你丢失了与数据库的连接,抛出错误,{{1}触发但 因某种原因需要数据库连接 - 可能记录错误或提供联系信息?)。

仅凭这个原因,我会保持error.jsp相对简单和独立。