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

相关文章
相关标签/搜索