Spring MVC异常处理

来源:互联网 发布:如何做销售数据分析表 编辑:程序博客网 时间:2024/06/04 08:57
Spring MVC处理异常有3种方式: 
(1)使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver; 
(2)实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器; 
(3)使用@ExceptionHandler注解实现异常处理; 
web.xml中配置
<error-page>  <exception-type>java.lang.Throwable</exception-type>  <location>/500.jsp</location>  </error-page>  <error-page>  <error-code>500</error-code>  <location>/500.jsp</location>  </error-page>  <error-page>  <error-code>404</error-code>  <location>/404.jsp</location>  </error-page> 

1. 使用SimpleMappingExceptionResolver实现异常处理 

1.1、在Spring的配置文件applicationContext.xml中增加以下内容:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  <!-- 定义默认的异常处理页面,当该异常类型的注册时使用 -->  <property name="defaultErrorView" value="error"></property>  <!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->  <property name="exceptionAttribute" value="ex"></property>  <!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 -->  <property name="exceptionMappings">  <props>  <prop key="cn.basttg.core.exception.BusinessException">error-business</prop>  <prop key="cn.basttg.core.exception.ParameterException">error-parameter</prop>    <!-- 这里还可以继续扩展对不同异常类型的处理 -->  </props>  </property>  </bean> 

2, 实现HandlerExceptionResolver 接口自定义异常处理器 

2.1. 增加HandlerExceptionResolver 接口的实现类MyExceptionHandler,代码如下

public class MyExceptionHandler implements HandlerExceptionResolver {  public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,  Exception ex) {  Map<String, Object> model = new HashMap<String, Object>();  model.put("ex", ex);    // 根据不同错误转向不同页面  if(ex instanceof BusinessException) {  return new ModelAndView("error-business", model);  }else if(ex instanceof ParameterException) {  return new ModelAndView("error-parameter", model);  } else {  return new ModelAndView("error", model);  }  }  }

2.2 在Spring的配置文件applicationContext.xml中增加以下内容:

<bean id="exceptionHandler" class="cn.basttg.core.exception.MyExceptionHandler"/>

3. 使用@ExceptionHandler注解实现异常处理 

在类中使用@ExceptionHandler注解声明异常处理

0 0
原创粉丝点击