2013-02-19 51 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

相關問題