首页 > 其他分享 >13、SpringMVC之异常处理器

13、SpringMVC之异常处理器

时间:2023-11-14 20:11:43浏览次数:42  
标签:13 SpringMVC springframework 处理器 org import 异常 13.3

13.1、环境搭建

创建名为spring_mvc_exception的新module,过程参考9.1节和9.5节

13.1.1、创建错误提示页

image

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>错误页面</title>
</head>
<body>

<h1>errorPage.html</h1>

</body>
</html>

13.1.2、创建会发生异常的控制器方法

image

package online.liaojy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author liaojy
 * @date 2023/11/13 - 19:48
 */
@Controller
public class TestController {

    @RequestMapping("/test/hello")
    public String testHello(){
        // 在控制器方法中,制造一个数值运算异常
        System.out.println(1/0);
        return "success";
    }

}

13.2、异常处理器概述

  • SpringMVC 提供了一个处理控制器方法执行异常的接口:HandlerExceptionResolver

  • HandlerExceptionResolver 接口的实现类有:DefaultHandlerExceptionResolver 和 SimpleMappingExceptionResolver

  • 实际工作中,有时使用 SimpleMappingExceptionResolver 异常处理器,来对控制器方法出现的异常进行自定义异常处理

13.3、使用xml配置异常处理器

13.3.1、基本配置示例

image

    <!--配置异常处理-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <!--设置异常和错误提示页面的映射关系-->
        <property name="exceptionMappings">
            <props>
                <!--
                    属性key:用来设置要处理的(在控制器方法执行过程中可能出现的)异常的全类名
                    <prop>标签体:用来设置当(控制器方法执行)发生异常时,要跳转到的逻辑视图
                -->
                <prop key="java.lang.ArithmeticException">errorPage</prop>
            </props>
        </property>
    </bean>

13.3.2、基本示例测试效果

image

image

13.3.3、进阶配置示例

image

        <!--属性value:设置共享到域对象中的异常信息的属性名-->
        <property name="exceptionAttribute" value="exceptionMessage"></property>

image

异常信息:<p th:text="${exceptionMessage}"></p>

13.3.4、进阶示例测试效果

image

image

13.4、使用注解配置异常处理器

13.4.1、创建异常处理组件

image

package online.liaojy.controller;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

/**
 * @author liaojy
 * @date 2023/11/13 - 20:42
 */
// @ControllerAdvice 注解:用于将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {

    // @ExceptionHandler 注解:用来设置(该方法)要处理的异常
    @ExceptionHandler(ArithmeticException.class)
    public String testHandleException(Throwable ex,Model model){

        // 设置共享到请求域中的异常信息的属性名
        model.addAttribute("exceptionMessage",ex);

        // 返回发生异常时的逻辑视图
        return "errorPage";
    }

}

13.4.2、测试效果

image

image

标签:13,SpringMVC,springframework,处理器,org,import,异常,13.3
From: https://www.cnblogs.com/Javaer1995/p/17824364.html

相关文章

  • P5513 [CEOI2013] Board CWOI1114C
    70分做法非常容易想到,使用高精度对经过的点编号,令\(pos\)为点的编号,初始为\(1\),则:1:\(pos<<=1\)2:\(pos<<=1|1\)U:\(pos>>=1\)L:\(pos--\)R:\(pos++\)#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=1e5+5,i......
  • 软件设计Tutorial 13_享元模式
    [实验任务一]:围棋设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。实验要求:1. 提交类图;  2.提交源代码;3.注意编程规范;4.要求用简单工厂模式和单例模式实现享元工厂类的设计。 packageXiang;publicclassBla......
  • 【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(字符串)
    [NOIP2011普及组]数字反转题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入格式一个整数。输出格式一个整数,表示反转后的新数。样例#1样例输入#1123样......
  • 11月13数组以及数组常用发法
    目录1.数组2.数据的常用方法1.length方法2.push方法3.pop方法4.unshift方法5.shift方法6.slice方法7.reverse方法8.join方法9.concat方法10.sort方法特殊情况解决特殊情况的方法11.forEach方法12.splice方法null13.map方法还有用for循环取值1.数组数组的作用:使用单独的变量名来......
  • chapter 13:TCP/IP 和网络编程
    学习笔记:TCP/IP和网络编程13.0摘要本章分为两个部分:TCP/IP协议与应用包括TCP/IP协议栈、IP地址、主机名、DNS、IP数据包和路由器。描述了UDP和TCP协议、端口号以及TCP/IP网络中的数据流。解释了服务器-客户端计算模型和套接字编程接口。通过使用UDP和TCP套接字的示例......
  • 11月13数组以及数组常用发法
    目录1.数组2.数据的常用方法1.length方法2.push方法3.pop方法4.unshift方法5.shift方法6.slice方法7.reverse方法8.join方法9.concat方法10.sort方法特殊情况解决特殊情况的方法11.forEach方法12.splice方法null13.map方法还有用for循环取值1.数组数组的作用:使用单独的变量名来......
  • 2023年11月13日模拟赛
    同步更新于我的博客总结昨日中二病发作写了一篇离谱文章,请直接无视,别看阿⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄。害怕......
  • 11.13 模拟赛小记
    30+0+10+0全真模拟。今天的模拟赛有一种格外的说不上来的绝望的感觉。很不好描述的。一直在想如果这是真实的noip赛场那我不就大寄特寄了。下午因为不舒服所以玩了一下午(?)一直在机惨别人(?)玩的很开心。但还是想看大家在机房跳钢管舞喵(?A.game赛时看到这个题之后就变得很愚蠢。......
  • 11.13
    本周从周一上完课,把那天的学长的期中考试写完,就放松了,没继续练,就把idea一关啥也没关,然后除了正常写作业,已经周二晚上周三早上背了背英语,来应对老师的听写测验,学习的时间分配很少,感觉好像期中考试完了之后,就放松了,周末三天更是除了写了点离散数学作业,一点没学习,导致本周一的分级测......
  • 2023/11/13(可对角化)
    ......