我試圖使用servlet處理錯誤的一個簡單的Web應用程序,並且它工作得很好用專門定義任何錯誤異常類型在我的web.xml。不過,如果我嘗試使用HttpServletResponse.sendError方法發送HTML錯誤代碼,web.xml中似乎沒有拿起錯誤,並只顯示該特定HTML狀態碼Tomcat的默認錯誤頁面。response.sendError()顯示的Tomcat默認的錯誤頁面,而不是web.xml中指定錯誤頁面
我的錯誤處理servlet有一對「catch-all」通用錯誤頁面,如果它不匹配某個特定的錯誤代碼,它會生成一個通用錯誤頁面,所以錯誤根本就沒有進入servlet,而我完全不明白爲什麼這樣做。
這裏是我的web.xml的相關片段:
<error-page>
<error-code>400</error-code>
<location>/Error</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/Error</location>
</error-page>
這裏是我試圖在servlet發送錯誤的例子:
if (thing.getSizeOfThing() == null || thing.getQuantity() <= 0) {
response.sendError(400);
}
我的錯誤處理的servlet將顯示基於錯誤代碼或異常類型,以及所生成的誤差小服務程序相關的錯誤頁面。正如我所說,這是例外偉大的工作,而不是工作在所有使用sendError方法發送錯誤。
我已確保在響應最小的內容大小的問題不是問題(或不應該是)因爲我沒有收到瀏覽器特定的錯誤頁面,但是tomcat的通用400錯誤頁面。
任何幫助,非常感謝!