首页 > 代码库 > 2017.3.31 spring mvc教程(四)全局的异常处理

2017.3.31 spring mvc教程(四)全局的异常处理

学习的博客:http://elf8848.iteye.com/blog/875830/

我项目中所用的版本:4.2.0。博客的时间比较早,11年的,学习的是Spring3 MVC。不知道版本上有没有变化比较大的功能。

 

spring mvc教程(四)全局的异常处理

1.SimpleMappingExceptionResolver

1 SimpleMappingExceptionResolver 的父类 : AbstractHandlerExceptionResolver
2 通过SimpleMappingExceptionResolver,将不同的异常映射到不同的jsp页(通过exceptionMappings属性的配置)。
3 如果所抛出的异常在exceptionMappings中没有对应的映射,则Spring将显示默认异常页。 通过defaultErrorView属性,配置默认异常页。
4 也可以自己实现HandlerExceptionResolver接口,用来处理异常。

 

注意:这里配置的异常显示界面均仅包括主文件名,至于文件路径和后缀已经在viewResolver中指定。如/error/error表示/error/error.js。

 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> 

 

显示错误的jsp文件

"exception"是key,在SimpleMappingExceptionResolver类中默认指定的。可以通过配置文件修改这个值。

 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>

 

2.将全局异常记录到日志中

(1)warnLogCategory属性

1 <property name="warnLogCategory">           
2 <value>org.springframework.web.servlet.handler.SimpleMappingExceptionResolver</value> 3 </property>

 

(2)log4j的配置文件

加入(全限定名):log4j.logger.org.springframework.web.servlet.handler.SimpleMappingExceptionResolver=WARN。这样即使log4j的根日志级别是ERROR,也一定会被收录。

 

2017.3.31 spring mvc教程(四)全局的异常处理