13、SpringMVC之异常解析器
13.1、环境搭建
创建名为spring_mvc_exception的新module,过程参考9.1节和9.5节
13.1.1、创建错误提示页
<!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、创建会发生异常的控制器方法
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、基本配置示例
<!--配置异常处理-->
<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、基本示例测试效果
13.3.3、进阶配置示例
<!--属性value:设置共享到域对象中的异常信息的属性名-->
<property name="exceptionAttribute" value="exceptionMessage"></property>
异常信息:<p th:text="${exceptionMessage}"></p>
13.3.4、进阶示例测试效果
13.4、使用注解配置异常解析器
13.4.1、创建异常处理组件
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、测试效果
13、SpringMVC之异常解析器的更多相关文章
- SSM-SpringMVC-23:SpringMVC中初探异常解析器
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客要讲的是异常解析器,SimpleMappingExceptionResolver简单映射异常解析器 可 ...
- SpringMVC源码阅读:异常解析器
1.前言 SpringMVC是目前J2EE平台的主流Web框架,不熟悉的园友可以看SpringMVC源码阅读入门,它交代了SpringMVC的基础知识和源码阅读的技巧 本文将通过源码(基于Spring ...
- SpringMVC框架中的异常解析器-ExceptionHandler和HandlerExceptionResolver
SpringMVC框架中,处理异常还是挺方便的,提供了一个异常解析器. 处理局部异常 @Controller public class AccessController { /** * 处理这个Con ...
- SpringMVC——说说视图解析器
学习SpringMVC——说说视图解析器 各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请 ...
- SpringMVC 多视图解析器配置以及问题
在SpringMVC模式当中可以通过如下配置来支持多视图解析 <!-- jsp jstl --> <bean id="JSPViewResolver" class ...
- SpringMVC的视图解析器
ViewResolver和View介绍 SpringMVC用于处理视图最重要的两个接口是ViewResolver和View.ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视 ...
- 学习SpringMVC——说说视图解析器
各位前排的,后排的,都不要走,咱趁热打铁,就这一股劲我们今天来说说spring mvc的视图解析器(不要抢,都有位子~~~) 相信大家在昨天那篇如何获取请求参数篇中都已经领略到了spring mvc注 ...
- springMVC自定义方法属性解析器
使用场景例子: 用户登陆系统一般会往Session里放置一个VO对象,然后在controller里会来获取用户的userId等信息. 之前的写法是:@SessionAttributes配合@Model ...
- springMVC初探视图解析器——InternalResourceViewResolver
springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器. springmvc里提供了多个视图解析器,InternalResourceViewResolver就 ...
- springmvc<三> 异常解析链与视图解析链
1.1.7. Exceptions - 如果异常被Controller抛出,则DispatchServlet委托异常解析链来处理异常并提供处理方案(通常是一个错误的响应) spri ...
随机推荐
- C#笔记 picturebox功能实现(滚动放大,拖动)
代码链接 1. picturebox上的坐标与原图中坐标的转换 (1) 由于图片的长宽比例和picturebox的长宽比例不同,所以图片不想拉伸的话,左右或者上下会有留白.将picturebox的si ...
- vs2019 调试服务器代码
前言&使用背景: 又是我,一个不是在解决bug就是在解决bug路上的黄金程序员.今天给大家介绍一种方法是vs自带的调试工具.通常我们会遇见一种情况,那就是本地调试没有一点问题! 可一但发布到服 ...
- vant做城市列表
vant: https://youzan.github.io/vant/#/zh-CN/ 安装 cnpm i -S vant 按需加载配置 # 在 babel.config.js 中配置 module ...
- [SHOI2011]双倍回文 题解
[SHOI2011]双倍回文 题解 看了一些写回文自动机的大佬的代码,我深感敬畏,于是我转身向Manacher走去 现在荣登最优解第一页-- 说实话,这个方法的复杂度是很玄学的,但是加了一些优化之后, ...
- 实例讲解多处理器下的计算机启动(xv6的启动过程)
启动 启动方面的文章之前也写过,那是我的第一篇文章,本文在前文的基础之上完善,然后增加了多处理器启动的情况,废话不多说直接来看. 启动可以分为两种,一种为冷启动,是指计算机在关机状态下按 POWER ...
- OOP第二阶段题集总结
一.前言 知识点:考察继承和多态为多,其中还涉及迭代器的使用,在每个题集中都有一个综合性题目设计多方面知识点考试,有List类和HashMap的使用以及正则表达式的运用,并且注重考查设计,理解类与类之 ...
- ABC347题解
省流:输+赢 D 按位分析. 既然两个数异或后的结果是 \(C\),那就考虑 \(C\) 中为 \(1\) 的数中有几个是在 \(X\) 当中的. 假如 \(\text{a - popcnt(X) = ...
- Ubuntu 更改鼠标滚轮速度
1.安装imwheel sudo apt-get install imwheel 2.更改配置 sudo gedit ~/.imwheelrc 输入以下内容: ".*"None, ...
- 前端模拟接口工具推荐—Apifox(mock数据)
参考文章:https://blog.csdn.net/m0_67403272/article/details/123376945 高级mock部分 1.通过设置期望值,选择类型,比对body部分的参数 ...
- CLR via C# 笔记 -- 特性(18)
1. 特性继承自System.Attribute,能作用于TypeDef(类.结构.枚举.接口和委托),MethodDef(含构造器),ParamDef,FieldDef,PropertyDef,Ev ...