servlet 異常處理
阿新 • • 發佈:2018-12-25
Servlet異常處理
1. 宣告異常處理宣告兩種錯誤處理:HTTP錯誤程式碼的處理 和 指定程式中產生的java異常的處理。
在web.xml檔案中宣告對各種異常的處理方法。
元素結構:
<error-page>
|____<error-code> or <exception-type>
|
|____<location>
<error-code>: 制定錯誤程式碼。
<exception-type>: 制定java異常類的完整限定名。
<location>: 給出用於響應HTTP錯誤程式碼或者Java異常的資源的路徑。
HTTP異常的處理
利用web.xml靜態設定錯誤響應
Java程式碼
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>Test My Servlet</display-name>
- <description>
- Test My Servlet
- </description>
- <error-page>
- <error-code>404</error-code>
- <location>/myjsp/error.html</location>
- </error-page>
- </web-app>
我們也可以將error.html改為一個Servlet類來處理。
Servlet容器在請求物件中設定的屬性
屬性名字 屬性型別 屬性說明
Java程式碼
- javax.servlet.error.status_code: Integer HTTP協議的狀態程式碼
- javax.servlet.error.exception_type: Class 未捕獲異常的Class類的物件
- javax.servlet.error.message: String 傳遞給sendError()方法的訊息
- javax.servlet.error.exception: Throwable 呼叫錯誤頁面的未捕獲異常
- javax.servlet.error.request_uri: String 當前請求的URI
- javax.servlet.error.servlet_name: String 導致錯誤頁面被呼叫的Servlet的名字
java程式中產生的異常處理
將上面web.xml的<error-code>改為<exception-type>後,輸入類似:
<exception-type>java.io.FileNotFoundException</exception-type>
當檔案找不到時捕獲這個異常並通過<location>去呼叫處理。
最後,HttpServletResponse裡面有HTTP協議所定義的web響應數字。
利用ServletRequest 的getRequestDispatcher()得到getRequestDispatcher物件,
呼叫forward()方法去呼叫另一個Servlet類