2013-02-19 24 views
5

有一个在Java Web应用程序的选项,以处理在web.xml定义错误页的异常:JSP错误页面可能导致问题吗?

<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页面。

我希望是有道理....

+0

+1非常好的问题 – 2013-02-19 10:00:16

+0

你能否详细说明“半死”情况? – 2013-02-19 10:24:48

+0

@HardikMishra我编辑了这个问题来更好地解释我自己。请看第二段。 – Malki 2013-02-19 10:57:02

回答

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页面。
0

我当然可以设想在你error.jsp需要从服务器上的某些功能的情况下,服务器无法满足该(如你失去了你的数据库的连接,出现错误,error.jsp被触发,但由于某种原因需要数据库连接 - 可能记录错误或提供联系信息?)。

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

+0

我同意保持它简单,但有没有办法确保在呈现JSP时出现错误,应用程序将重定向到更简单的HTML错误页面? – Malki 2013-02-19 10:59:21