Spring MVC 异常处理主要存在两种方式
- SpringMvc自带的简单异常处理器(SimpleMappingExceptionResolver)。
<!-- 配置简单映射异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 发生异常默认跳转页面 -->
<property name="defaultErrorView" value="error"/>
<property name="exceptionMappings">
<map>
<!-- 指定发生尝试除以零异常跳转页面 -->
<entry key="java.lang.ArithmeticException" value="error"/>
</map>
</property>
</bean>
- 实现Spring的异常处理接口(HandlerExceptionResolver)自己自定义异常处理器。
/**
* 自定义异常处理器
*/
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView modelAndView = new ModelAndView();
// 指定跳转的异常页面
modelAndView.setViewName("myerror");
if (e instanceof ArithmeticException) {
modelAndView.addObject("msg", "尝试除以零");
} else {
modelAndView.addObject("msg", e.getMessage());
}
return modelAndView;
}
}
<!-- 配置自定义异常处理 -->
<bean class="com.itcast.resolver.MyExceptionResolver"/>
注意:在跳转异常页面时,页面存放地址最好满足配置的视图解析规则,不然会出现如下异常
。例如:我的视图解析配置如下
<!-- 配置视图解析 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图名前缀 -->
<property name="prefix" value="/jsp/"></property>
<!-- 视图名后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
我的异常页面就存在在Jsp文件中。