簡體   English   中英

在Java / JSP中使用errorPage指令和Servlet過濾器

[英]Working with errorPage directive with Servlet Filters in Java/JSP

預先感謝大家

我已經重寫了HTTPServletResponse ,該HTTPServletResponse收集標頭,並且還放在一起一個Servlet過濾器,該過濾器采用這些標頭並使用其適當方法設置它們(例如: 500 error code使用response.sendError(500) )。 我注意到當在web.xml設置此過濾器時,永遠不會使用具有errorPage設置的任何頁面,並且我收到的消息是沒有堆棧跟蹤的默認tomcat 500消息The server encountered an internal error () that prevented it from fulfilling this request. 日志中也沒有任何內容記錄正在發生的事情。 我已經驗證過濾器和重寫的HTTPServletResponse不會引發任何Exception 另一個有趣的注釋是,如果我注釋掉我使用sendError方法的行,它將使用指定的errorPage ,然后將狀態代碼設置為200

再次感謝,

山姆

好吧,#sendError方法未指定要使用您的自定義錯誤頁面。 它指定錯誤條件立即發送到客戶端,並在末尾刷新響應緩沖區。 因為Servlet API比JSP API更通用,所以行為取決於容器實現。 在Servlet層中發送錯誤的最簡單方法是在使用#sendError時顯示容器的默認錯誤頁面(這是Tomcat所做的)。

一種解決方案是鏈接請求/響應,以便servlet容器的響應處理器可以委派到您的自定義錯誤頁面,而不是立即發送錯誤。

暫無
暫無

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

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