Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Servlet異常處理

Servlet異常處理

編輯:關於Android編程

1:聲明式異常處理

什麼是聲明式:就是在web.xml中聲明對各種異常的處理方法。

是通過元素來聲明的,下面有幾個子元素如下圖

\

error-code:http錯誤代碼

exception-type:java異常類的完整名

location:響應http錯誤代碼或者java異常的資源路徑

下面通過例子一一講解:

1:首先我們做個最簡單的先在程序中加一個FileNotFound.html文件,文件內容如下

\
 1 
23 4 567 你訪問的頁面並不存在,或者被移到其他位置。

8 如有其他問題請聯系管理員 9 10

然後我們在web.xml中加入下面代碼


        404
        /FileNotFound.html

如果開啟tomcat 在浏覽器輸入http://item.taobao.com/item.htm?id=41222768202

然後會出現下面

\

2:然後我們發現如果我聲明越來越多的異常時候會出現越來越多的html這樣的靜態代碼,那麼可以能否在後台操作呢,答案是肯定的,現在我們用一個Servlet類來進行響應

首先來看一副關於servlet相關屬性的圖\

現在我以其中status_code作為例子先建立一個ErrorHandlerServlet如下

\
 1 public class ErrorHandlerServlet extends HttpServlet{
 2 
 3     private static final long serialVersionUID = 1L;
 4     protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException
 5     {
 6 
 7         response.setContentType("text/html;charset=gb2312");
 8         PrintWriter out=response.getWriter();
 9         Integer status_code=(Integer)request.getAttribute("javax.servlet.error.status_code");        
10         out.println("
"); 11 out.println(""); 12 13 switch(status_code) 14 { 15 case 401: 16 out.println("

http錯誤碼:"+status_code+"

"); 17 out.println("你並沒有被授權"); 18 out.println("如有其他問題請聯系管理員"); 19 break; 20 case 404: 21 out.println("

http錯誤碼:"+status_code+"

"); 22 out.println("你訪問的頁面並不存在,或者被移到其他位置"); 23 out.println("如有其他問題請聯系管理員"); 24 break; 25 } 26 27 out.println(""); 28 out.close(); 29 }

然後在配置web.xml

\
 1 
 2         ErrorHandlerServlet
 3         com.lp.servlet.ErrorHandlerServlet
 4     
 5     
 6         ErrorHandlerServlet
 7         /errorHandler
 8     
 9     
10         404
11         /errorHandler
12     

現在我們再次開啟tomcat 在浏覽器輸入http://item.taobao.com/item.htm?id=41222768202

可以看到如下圖

\

3:我們發現發現關於exception-type都沒有用上那麼關於怎麼用exception-type呢下面來用實例講解

我們在寫一個關於文件操作的Servlet類FileExceptionServlet

\
 1 public class FileExceptionServlet extends HttpServlet{
 2     /**
 3      * 
 4      */
 5     private static final long serialVersionUID = 1L;
 6     public  void doGet(HttpServletRequest request,HttpServletResponse response) throws FileNotFoundException  
 7     {        
 8             File file=new File("1.txt");
 9             FileInputStream fileInputStream=new F
10     }
11 }

在這裡我們並沒有1.txt文件,注意聲明的FileNotFoundException異常在配置中會用的到

同樣我們在寫一個關於處理Servlet異常的ExceptionHandlerServlet類

\
 1 public class ExceptionHandlerServlet extends HttpServlet{
 2 
 3     /**
 4      * 
 5      */
 6     private static final long serialVersionUID = 1L;
 7     protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException
 8     {
 9         response.setContentType("text/html;charset=gb2312");
10         PrintWriter out=response.getWriter();
11         out.println("
"); 12 out.println(""); 13 out.println("應用程序出錯"); 14 out.println("錯誤原因可能是某個服務器端文件被刪除"); 15 out.println("請聯系管理員"); 16 out.println(""); 17 out.close(); 18 }

然後再次配置web.xml

\
 1 
 2         ExceptionHandlerServlet
 3         com.lp.servlet.ExceptionHandlerServlet
 4     
 5     
 6         ExceptionHandlerServlet
 7         /exceptionHandler
 8     
 9     
10         java.io.FileNotFoundException
11         /exceptionHandler
12     

然後啟動tomcat輸入http://item.taobao.com/item.htm?id=41222768202看到

\

2:編程式的異常處理

這個在實際開發中運用的比較多主要采取try catch捕獲異常 然後進行處理。舉一個小例子比喻我們上面說的文件操作,如果發現文件不存在的時候我們可以把這個錯誤記錄在日志便於查閱,ok我看一下

\
 1 public  void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException  
 2     {    
 3         try {
 4             File file=new File("1.txt");
 5             @SuppressWarnings("unused")
 6             FileInputStream fileInputStream=new FileInputStream(file);
 7         } catch (FileNotFoundException e) {
 8             getServletContext().log(e.getMessage());
 9             response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"文件未能發現");
10         }
11     }

從中我們可以看出采用了sendError這個方法,目的就是可以把一些錯誤信息很好的展現出來,日志這裡就是簡單提下,在實際中可能根據不同業務選擇的不一樣。

然後再次配置wen.xml


        FileExceptionServlet
        com.lp.servlet.FileExceptionServlet
    
    
        FileExceptionServlet
        /fileexception
    

再次運行http://item.taobao.com/item.htm?id=41222768202

\

好了,關於Servlet異常就說這麼多了,隨著技術不停的更新,處理異常的方式也越來越多但是這些基礎的還是應該了解和學習下的


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved