• (续)SSM整合之springmvc笔记(异常处理器)(P1694-170)还没完


    目录

    异常处理器

    一  基于配置的异常处理

    1 .配置SimpleMappingExceptionResolver

    2 .创建error.html

    3 . 写异常

    4 .测试:

    二   基于注解的异常处理

    1 . 创建ExceptionController

    2.创建error.html

    3.测试


    异常处理器

    什么叫做异常处理器:

     我们在控制器方法执行的过程中  如果出现了某些异常   那我们就可以通过springmvc为我们提供的一个接口来处理这些异常   然后这个接口叫做HandlerExceptionResolver

    一  基于配置的异常处理

    SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:
    HandlerExceptionResolver 接口的实现类有: DefaultHandlerExceptionResolver
    SimpleMappingExceptionResolver
    双击Shift
    只有一个抽象方法  叫做resolveException
    作用:如果控制器方法在执行的过程中 出现了指定异常   resolveException就可以来处理异常
    然后这个方法的返回值叫做 ModelAndView
    ModelAndView:springmvc执行完控制器方法之后的一个统一的对象  在执行完控制器方法之后 都会返回ModelAndView
    

    Model:往请求域里面共享数据

    View:实现页面跳转

    这时的控制器方法有异常 不会在往下执行

    所以我们现在在解析异常的时候  就可以给他设置一个新的ModelAndView

    (异常解析器的功能)主要效果体现在:如果控制器方法出现异常  然后我们现在就可以通过异常解析器来对异常进行解析  解析完之后  我们就可以往域对象中共享一个新的数据   比如我们把错误信息 共享到请求域中  然后在通过View实现页面跳转  跳转到一个新的页面   比如说有专门的错误页面

    异常解析器的功能总结:可以处理控制器方法执行过程中所出现的异常  而且给他设置一个新的ModelAndView  来实现页面跳转并且共享数据 

    Ctrl+h  打开接口实现类

    DefaultHandlerExceptionResolver :默认的
    SimpleMappingExceptionResolver:自己配置
    打开DefaultHandlerExceptionResolver

    光标找到doResolveException

    对方法进行重写 重写完调用doResolveException方法

    DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver

    AbstractHandlerExceptionResolver implements HandlerExceptionResolver

    Alt+7 找到AbstractHandlerExceptionResolver类里面的方法

    在这个类里面重写了resolveException  然后在resolveException方法中调用了doResolveException

    点击 doResolveException进去 发现doResolveException是一个抽象方法

    所以当DefaultHandlerExceptionResolver extends AbstractHandlerExceptionResolver

    就必须要重写doResolveException来对当前的异常进行处理

    HttpRequestMethodNotSupportedException 405

    1 .配置SimpleMappingExceptionResolver

    1. <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    2. <property name="exceptionMappings">
    3. <props>
    4. <prop key="java.lang.ArithmeticException">errorprop>
    5. props>
    6. property>
    7. bean>

    2 .创建error.html

    1. html>
    2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>错误title>
    6. head>
    7. <body>
    8. <h1>error.htmlh1>
    9. body>
    10. html>

    3 . 写异常

    1. package com.atguigu.controller;
    2. import org.springframework.stereotype.Controller;
    3. import org.springframework.web.bind.annotation.RequestMapping;
    4. @Controller
    5. public class TestController {
    6. @RequestMapping("/test/hello")
    7. public String testHello(){
    8. System.out.println(1/0);
    9. return "success";
    10. }
    11. }

    4 .测试:

    基于xml
    1. <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    2. <property name="exceptionMappings">
    3. <props>
    4. <!key设置要处理的异常,value设置出现该异常时要跳转的页面所对应的逻辑视图>
    5. <prop key="java.lang.ArithmeticException">errorprop>
    6. props>
    7. property>
    8. <!设置共享在请求域中的异常信息的属性名>
    9. <property name="exceptionAttribute" value="ex">property>
    10. bean>

    二   基于注解的异常处理

    1 . 创建ExceptionController

    1. package com.atguigu.controller;
    2. //将当前类标识为异常处理的组件
    3. @ControllerAdvice
    4. public class ExceptionController {
    5. //设置要处理的异常信息
    6. @ExceptionHandler(ArithmeticException.class)
    7. public String handleException(Throwable ex, Model model){
    8. //ex表示控制器方法所出现的异常
    9. model.addAttribute("ex", ex);
    10. return "error";
    11. }
    12. }

    2.创建error.html

    1. html>
    2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>错误title>
    6. head>
    7. <body>
    8. <h1>error.htmlh1>
    9. <p th:text="${ex}">p>
    10. body>
    11. html>

    3.测试

     
    

  • 相关阅读:
    DNS如何在Windows NIC配置多个DNS服务器时完成DNS解析查询
    Linux 基础-新手必备命令
    HashMap
    移动Web第三天 1 移动端特点 && 2 百分比布局 && 3 Flex布局
    程序员敲诈老板,或面临37年监禁
    【博客538】BGP优雅重启机制
    接口自动化测试很难吗?来看看这份超详细的教程!
    为什么UI自动化难做?—— 关于Selenium UI自动化的思考
    前端实现归并排序的思路
    排序归纳 Java版
  • 原文地址:https://blog.csdn.net/m0_59281987/article/details/127957136