簡體   English   中英

response.sendError()顯示Tomcat默認錯誤頁面而不是web.xml指定的錯誤頁面

[英]response.sendError() shows Tomcat default error page instead of web.xml specified error page

我正在嘗試使用servlet來處理簡單的Web應用程序的錯誤,並且它對我在web.xml中使用exception-type特別定義的任何錯誤都非常有效。 但是,如果我嘗試使用HttpServletResponse.sendError方法發送HTML錯誤代碼,則web.xml似乎不會收到錯誤,只顯示該特定HTML狀態代碼的Tomcat默認錯誤頁面。

我的錯誤處理servlet有一些“全能”通用錯誤頁面,如果它與特定錯誤代碼不匹配,它將生成錯誤代碼,因此錯誤只是沒有進入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將根據錯誤代碼或異常類型以及生成錯誤的servlet顯示相關的錯誤頁面。 正如我所提到的,這對於異常非常有用,並且對於使用sendError方法發送的錯誤根本不起作用。

我已經確保響應中最小內容大小的問題不是問題(或者不應該是),因為我沒有收到瀏覽器特定的錯誤頁面,而是tomcat的通用400錯誤頁面。

任何幫助是極大的贊賞!

解決了:

這是一個NullPointerException的問題,我在錯誤處理servlet中忽略了,所以tomcat默認為自己的錯誤頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM