容器在異常/錯誤期間進行的調度稱爲錯誤調度。這些通常是發送到錯誤頁面。根據我的理解,沒有辦法直接進行錯誤分派。
通過錯誤分派發出的請求將使調度程序類型設置爲DispatcherType.ERROR。 (在servlet的服務方法代碼中,您可以使用getDispatcherType()獲取調度類型)
以下六個請求作用域屬性也將在錯誤分派中設置。
"javax.servlet.error.exception"
"javax.servlet.error.exception_type"
"javax.servlet.error.message"
"javax.servlet.error.request_uri"
"javax.servlet.error.servlet_name"
"javax.servlet.error.status_code"
所以如果有哪個容器重定向錯誤的錯誤頁面,你知道你可以瞭解更多信息,請閱讀這六個屬性。
http://docs.oracle.com/javaee/6/api/javax/servlet/DispatcherType.html http://docs.oracle.com/javaee/6/api/javax/servlet/RequestDispatcher.html
您可以設置在部署描述符(web.xml)使用標籤錯誤調度。例如,如果您爲404錯誤代碼添加了錯誤頁面標記,則當頁面未找到錯誤發生時,容器將分派到該頁面。在該錯誤頁面中,您可以使用request.getAttribute(「javax.servlet.error.message」)等代碼來檢索有關錯誤的詳細信息。例如...
的web.xml:
<web-app>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
error.jsp文件:
<!DOCTYPE html>
<html>
<head>
<title>404 Error</title>
</head>
<body>
The page was not found. You requested <%= request.getAttribute("javax.servlet.error.message") %> but it was not found. Sorry.
</body>
</html>
在上面的示例應用程序,如果客戶端請求的頁面沒有找到,或者你使用response.sendError (「404」,「...」),容器將對error.jsp執行錯誤分派。
JSP錯誤處理機制(使用「errorPage」和「isErrorPage」頁指令)也適用於此處。
這對我來說依然朦朧!我該如何設置/配置此錯誤分派?另外,doesnt response.sendError()調用錯誤調度? – brainOverflow 2013-05-02 21:34:08
我已經添加了一些關於執行錯誤分發的更多信息。 – manojtc 2013-05-03 05:37:39