1. 程式人生 > >servlet 異常處理

servlet 異常處理

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程式碼  收藏程式碼
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"  
  5.     version="2.4">  
  6.   <display-name>Test My Servlet</display-name>  
  7.   <description>  
  8.      Test My Servlet  
  9.   </description>  
  10.  <error-page>  
  11.   <error-code>404</error-code>  
  12.   <location>/myjsp/error.html</location>  
  13.  </error-page>  
  14. </web-app>  
我測試發現不行! 

我們也可以將error.html改為一個Servlet類來處理。 

Servlet容器在請求物件中設定的屬性 
屬性名字    屬性型別 屬性說明 
Java程式碼  收藏程式碼
  1. javax.servlet.error.status_code:  Integer  HTTP協議的狀態程式碼  
  2. javax.servlet.error.exception_type:  Class  未捕獲異常的Class類的物件  
  3. javax.servlet.error.message:   String  傳遞給sendError()方法的訊息  
  4. javax.servlet.error.exception:   Throwable 呼叫錯誤頁面的未捕獲異常  
  5. javax.servlet.error.request_uri:  String  當前請求的URI  
  6. 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類