目录
1 .配置SimpleMappingExceptionResolver
什么叫做异常处理器:
我们在控制器方法执行的过程中 如果出现了某些异常 那我们就可以通过springmvc为我们提供的一个接口来处理这些异常 然后这个接口叫做HandlerExceptionResolver
ModelAndView:springmvc执行完控制器方法之后的一个统一的对象 在执行完控制器方法之后 都会返回ModelAndView
Model:往请求域里面共享数据
View:实现页面跳转
这时的控制器方法有异常 不会在往下执行
所以我们现在在解析异常的时候 就可以给他设置一个新的ModelAndView
(异常解析器的功能)主要效果体现在:如果控制器方法出现异常 然后我们现在就可以通过异常解析器来对异常进行解析 解析完之后 我们就可以往域对象中共享一个新的数据 比如我们把错误信息 共享到请求域中 然后在通过View实现页面跳转 跳转到一个新的页面 比如说有专门的错误页面
异常解析器的功能总结:可以处理控制器方法执行过程中所出现的异常 而且给他设置一个新的ModelAndView 来实现页面跳转并且共享数据
光标找到doResolveException
对方法进行重写 重写完调用doResolveException方法
DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver
AbstractHandlerExceptionResolver implements HandlerExceptionResolver
Alt+7 找到AbstractHandlerExceptionResolver类里面的方法
在这个类里面重写了resolveException 然后在resolveException方法中调用了doResolveException
点击 doResolveException进去 发现doResolveException是一个抽象方法
所以当DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver
就必须要重写doResolveException来对当前的异常进行处理
HttpRequestMethodNotSupportedException 405
- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
-
- <prop key="java.lang.ArithmeticException">errorprop>
- props>
- property>
- bean>
- html>
- <html lang="en" xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8">
- <title>错误title>
- head>
- <body>
- <h1>error.htmlh1>
-
- body>
- html>
- package com.atguigu.controller;
-
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
-
-
- @Controller
- public class TestController {
-
- @RequestMapping("/test/hello")
- public String testHello(){
- System.out.println(1/0);
- return "success";
- }
-
- }
-
- <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
- <!–key设置要处理的异常,value设置出现该异常时要跳转的页面所对应的逻辑视图–>
- <prop key="java.lang.ArithmeticException">errorprop>
- props>
- property>
- <!–设置共享在请求域中的异常信息的属性名–>
- <property name="exceptionAttribute" value="ex">property>
- bean>
- package com.atguigu.controller;
-
- //将当前类标识为异常处理的组件
- @ControllerAdvice
- public class ExceptionController {
-
- //设置要处理的异常信息
- @ExceptionHandler(ArithmeticException.class)
- public String handleException(Throwable ex, Model model){
- //ex表示控制器方法所出现的异常
- model.addAttribute("ex", ex);
- return "error";
- }
-
- }
- html>
- <html lang="en" xmlns:th="http://www.thymeleaf.org">
- <head>
- <meta charset="UTF-8">
- <title>错误title>
- head>
- <body>
- <h1>error.htmlh1>
- <p th:text="${ex}">p>
- body>
- html>