Spring mvc如何實現全局的異常處理

在spring MVC的配置文件中:html

Xml代碼   收藏代碼
  1. <!-- 總錯誤處理-->  
  2. <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
  3.     <property name="defaultErrorView">    
  4.         <value>/error/error</value>  
  5.     </property>  
  6.     <property name="defaultStatusCode">    
  7.         <value>500</value>  
  8.     </property>     
  9. <property name="warnLogCategory">    
  10.         <value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value>  
  11.     </property>     
  12. </bean>   

 

這裏主要的類是SimpleMappingExceptionResolver類,和他的父類AbstractHandlerExceptionResolver類。java

具體能夠配置哪些屬性,我是經過查看源碼知道的。web

你也能夠實現HandlerExceptionResolver接口,寫一個本身的異常處理程序。spring的擴展性是很好的。spring

 

 

經過SimpleMappingExceptionResolver咱們能夠將不一樣的異常映射到不一樣的jsp頁面(經過exceptionMappings屬性的配置)。app

 

同時咱們也能夠爲全部的異常指定一個默認的異常提示頁面(經過defaultErrorView屬性的配置),若是所拋出的異常在exceptionMappings中沒有對應的映射,則Spring將用此默認配置顯示異常信息。jsp

注意這裏配置的異常顯示界面均僅包括主文件名,至於文件路徑和後綴已經在viewResolver中指定。如/error/error表示/error/error.jspui

 

 

顯示錯誤的jsp頁面:spa

Html代碼   收藏代碼
  1. <%@ page language="java" contentType="text/html; charset=GBK"  
  2.     pageEncoding="GBK"%>  
  3. <%@ page import="java.lang.Exception"%>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=GBK">  
  8. <title>錯誤頁面</title>  
  9. </head>  
  10. <body>  
  11. <h1>出錯了</h1>  
  12. <%  
  13. Exception e = (Exception)request.getAttribute("exception");  
  14. out.print(e.getMessage());  
  15. %>  
  16. </body>  
  17. </html>  

其中一句:request.getAttribute("exception"),key是exception,也是在SimpleMappingExceptionResolver類默認指定的,是可能經過配置文件修改這個值的,你們能夠去看源碼。xml

相關文章
相關標籤/搜索