感謝大家提前,與errorPage指令在Java Servlet過濾器的工作/ JSP
我已經覆蓋HTTPServletResponse
收集頭,也把一個Servlet過濾器是需要這些頭,並設置他們使用他們的正確方法(例如:500 error code
使用response.sendError(500)
)。我注意到,當這個過濾器在web.xml
設置,從未使用的有errorPage
集中的任何頁面,我收到的消息是沒有一個堆棧跟蹤The server encountered an internal error() that prevented it from fulfilling this request.
還沒有被寫入正在發生的事情日誌的默認的Tomcat 500
消息。我已經驗證,過濾器和覆蓋HTTPServletResponse
不拋出任何Exception
。另一點值得注意的是,如果我註釋掉,我現在用的是sendError
方法將使用指定的errorPage
線,但隨後狀態代碼設置爲200
。再次
感謝,
山姆
感謝您的答覆 - 我繼續這樣做,捕捉錯誤在我的過濾器,然後執行:的request.getRequestDispatcher(ErrorHandlerPath)的.forward(請求,響應),但仍不允許我設置在Status頭500,它允許我使用errorPage指令等,以規避但是當有異常被執行我的jsp頁面,一個狀態200仍然會發送。有任何想法嗎? – 2009-08-16 00:04:16
你可以使用HttpServletResponse#setStatus(int)。容器必須選擇一個配置的錯誤頁面。 – cafebabe 2009-08-18 06:53:31
.setStatus()才真正適用於成功請求,錯誤將覆蓋它(一些?/最?)容器 – jayshao 2010-07-14 21:35:53