SpringMvc---异常处理
介绍
SringMvc提供了异常处理机制,相当于是Web阶段学习的异常处理跳转至指定页面。在SpringMvc中可以在配置文件中注册SimpleMappingExceptionResolver指定在出现什么异常就跳转到指定页面。
使用(配置文件)
首先注册SimpleMappingExceptionResolver,使用property标签为属性exceptionMappings【错误映射注入】,在里面用pros标签里的pro标签声明每一个可能碰见的错误的类型以及返回的视图名。
pro标签中 key值是可能出现的错误,标签对之间是返回的视图名,视图自己建,不写前缀就是视图控制器中的前缀,写了前缀就会去指定的前缀目录下找。
再使用一个property标签将错误的内容装进请求域中,在页面返回错误信息
<!--配置SpringMvc的异常处理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--将错误信息保存到请求域中,value是key-->
<property name="exceptionAttribute" value="ex"></property>
</bean>
html页面中
<body>
出错了
<p th:text="${ex}"></p>
<a th:href="@{/}">返回首页</a>
</body>
使用(基于注解)
使用@ControllerAdvice注解生命异常处理类,在类中用@ExceptionHandler注解声明处理异常的方法,注解的参数就是可能出现的class类型的异常,最后返回视图名。
实际上也是一个controller
//使用@ControllerAdvice注解标识一个类,声明这个类是异常处理类
@ControllerAdvice
public class ExceptionController {
// 标注异常处理器的处理方法,里面的参数是可能出现的class类型的异常
@ExceptionHandler({ArithmeticException.class,NullPointerException.class})
public String testException(Model model,Exception e){
model.addAttribute("ex",e);
return "error";
}
}