SpingMVC拦截器-异常处理的思路,用户体验不好的地方
1、异常处理机制
1.1 原先我们的异常都是手动的try..catch()
2、他存在着一些缺陷:这里创建了一个Demo的controller,内部有一个show方法:

3、访问内部,我要实现demoshow方法,我们来调用show1和show2的方法:

4、有一个DemoSerive方法:在这个DemoSerive实现当中有一个show1的方法:方法内部比较简单,就是造异常

5、在我们show哪里有一个DemoSerive
5.1 在serive内部有一个show1的方法:

6、这里方法内部比较简单,其实就是造异常,作死,字符串转成数字,那肯定是报错,报什么异常,报一个类型转换异常。

6.1 后面还有其他作死异常
7、第五个异常,我手动抛一个空指针异常
8、自己定义一个异常,在这个包里定义异常:

9、原先在框架阶段,我们都是怎么处理异常的,基本上都是try catch
9.1
10、耦合到一起了

11、这里产生了一个新的概念,能不能将这个异常抽取出来

12、利用某一个组件执行找不到的组件

13、异常处理的思路-------预期异常和运行时的异常
13.1
14、往上抛

15、他的异常处理思路:
15.1今天咱们的学习主要围绕着这个绿色的方框展开工作:如果是springMVC我编好了,咱们得控制,如果springMVC没给我,我自己能定义

16、异常处理的两种方式:下面的汉语翻译是简单的映射处理器:
16.1 如果你出一个错误2,我跳一个错误2页面,如果错误三,我跳一个错误3页面:上面是异常跟页面跳射的映射关系:这是上面的核心
17、我自己定义一个异常处理器的接口:我内部可以做相应的代码操作:
17.1
18、简单异常处理器,这些东西我到底应该怎么配置:配异常和视图的一种映射配置:你比如换一家异常的,这个地方就配个bean

18.1 他内部就指定几个配置:error就是视图名称

19、如果展示的视图:展示的视图是abc就行

19.1 因为我是配置内部视图解析器:
20、如果你配的异常,跟我们下面所配的异常都不匹配,就会去走下面这个:

21、说完这个,再说下面这个:

22、往error里面去跳:

23、如果是类转化异常,也往error里去跳:
---------24、用户体验不好的地方:出现了这个,下次不去你网站买东西了,用户体验不好,即使是网络异常,也给一个友好的用户提示,网络异常,请找管理员等等

24.1下面如何实现友好提示:先给他配置一下:先配一个简单的异常处理器:simMapper---

25、内部配东西,我先配个默认的:

26、我配个error原因是在web页面下,没有这个error,建一个

26.1 弄一个error页面:

27、效果,错误还存在不过再次输入路径跳转到这个页面了:这个可以写的好看一点,找到exceptingMappers

28、这里再重新写一下,找到exceptionMapping,异常映射

28.1
29、这里有一个Map,里面配异常,配那些异常,entry
181103-SpringMVC异常处理-简单异常处理器_哔哩哔哩_bilibili
29.1 entry,key是业务名称

29.2 业务名称是,我刚才在业务层抛异常

29.3 这是类转换异常:

29.4 给他写一个key

29.5 选中右键copy

29.6 这叫类型转化异常,不过你得往哪跳呢

29.7 value值代表着往哪跳,你可以在这里多建几个:


29.8 再多建几个异常

29.9 我这里有一个自定义异常,我在这里调用show5的时候,咱看一下这个show5方法:

29.10 这个是自定义的,这个给copy一下:

29.11 如果报这个错误,我就让你去访问这个error2页面,重启一下

29.12 此时我再去访问:这里调用的是show1方法,如果想调用show2方法,就要换一个方法

29.13 在控制器中切换show方法5

29.14 此时爆异常报那个

29.15 页面会进行匹配,匹配那个成功,就往那个页面进行跳转

30、效果

-----------自定义异常处理步骤,简单映射处理器是spring帮我们配好的,我要用这个配置: 自定义异常处理比刚才简单映射处理器就是多了一步:
31、第一步创建一个异常处理器
31.1、第二步配置,我得让spring容器知道,我有真么一个异常处理器控制机制:

32、在com.itheima下面创建一个package

32.1 建一个resolver的包

32.2 创建一个新的类:这个类就是我的异常处理器

32.3 创建好之后,我们要干什么,接入一个exception接口

32.4 把未处理的异常给处理一下,resolve

32.5 这里会把异常对象,给你封装到这

32.6 不同异常可以返回不同操作,最后返回一个ModelandView
32.7 这里比较关键的是我们的exception对象,他是你爆异常的异常对象

32.8 跳转的错误的视图信息

32.9 我们刚才的demo有很多的异常:比如有这个类转换异常

32.10 这里有我们自定义的异常,我有什么MyE,当前的异常是不是我的自定义异常

33、如果是自定义异常,我就返回一个ModelAndView

34、如果是类转化异常,最后返回一个视图:

34.1 非往域中添加异常、

35、第一步实现接口,覆盖方法

36、第二个叫配置

37、你到底什么异常,往哪跳,我在逻辑内部就已经知道了

37.1 现在你知道放到容器内部执行就行了

38、找到我们的springMVC

38.1 编写我们的自定义处理器

38.2 把他发布一下

39、取一下info的数据

39.1
40、成功取出信息,这里我在自定义的异常处理器当中

41、执行这里的逻辑

42、再有异常怎么着,往上抛

42.1 -----------------SpringMVC知识要点

相关文章:
SpingMVC拦截器-异常处理的思路,用户体验不好的地方
1、异常处理机制 1.1 原先我们的异常都是手动的try..catch() 2、他存在着一些缺陷:这里创建了一个Demo的controller,内部有一个show方法: 3、访问内部,我要实现demoshow方法,我们来调用show1和show2的方法: 4、有一…...
【C++设计模式】用动画片《少年骇客》(Ben10)来解释策略模式
2023年8月25日,周五上午 今天上午学习设计模式中的策略模式时,发现这个有点像很多卡通片里面的变身器... #include<iostream>//alien hero是外星英雄的意思 //在《少年骇客》中,主角可以通过变身器变成10种外星英雄 class AlienHero{ …...
软件测试及数据分析处理实训室建设方案
一 、系统概述 软件测试及数据分析处理是软件开发过程中的一项重要测试活动,旨在验证不同软件模块或组件之间的集成与交互是否正常。综合测试确保各个模块按照设计要求正确地协同工作,以实现整个软件系统的功能和性能。以下是软件测试及数据分析处理的一…...
切换Debian的crontab的nano编辑器
Debian的crontab默认的编辑器是nano,用起来很不习惯,怎么才能转回vim呢? 用以下命令便可: #update-alternatives --config editor 出现以下所示的界面: 而后选择8使用/usr/bin/vim就能够了。 PS:若是你发现你的定时没有生效&…...
Spring Cloud Alibaba-Sentinel--服务容错
1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出…...
Stable Diffusion 系列教程 | 如何获得更高清优质的AI绘画
目录 1 高清修复 1.1 原理 1.2 基本操作 1.3 优缺点 2 UpScale 放大脚本 2.1 原理 2.2 基本操作 2.3 优缺点 3 附加功能放大 3.1 原理 3.2 基本操作 3.3 优缺点 优化出图质量,产出更高清,分辨率更高,更有细节的绘画作品呢&#x…...
食品饮料制造行业如何实现数字化转型和工业4.0
随着科技的不断进步和全球产业的不断发展,食品饮料制造行业也正迎来数字化转型和工业4.0的浪潮。这一转型不仅提升了生产效率和质量,还满足了消费者对更健康、更可持续产品的需求。本文将深入探讨食品饮料制造行业在数字化转型和工业4.0方面的趋势、挑战…...
UE学习记录03----UE5.2 使用MVVM示例
1.打开ue5.2新建C项目 2.项目中通过类导向新建C类,父类选择为UMVVMViewModelBase,创建完成会自动打开vs 3.在VS中对新建的类进行宏定义 使用 C 类向导 创建的类声明自动通过 UCLASS() 宏进行处理。 UCLASS() 宏使得引擎意识到这个类的存在,并…...
代码审计-审计工具介绍-DAST+SAST+IAST项目
DASTSASTIAST项目介绍 DAST: 动态应用程序安全测试(Dynamic Application Security Testing)技术在测试或运行阶段分析应用程序的动态运行状态。它模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定该We…...
网络安全应急响应预案培训
应急响应预案的培训是为了更好地应对网络突发状况,实施演 练计划所做的每一项工作,其培训过程主要针对应急预案涉及的相 关内容进行培训学习。做好应急预案的培训工作能使各级人员明确 自身职责,是做好应急响应工作的基础与前提。应急响应…...
STM32F4X 定时器中断
STM32F4X 定时器中断 什么是定时器STM32F4X 定时器分类有关定时器的概念预分频(PSC)自动重装载值(ARR) STM32F4X定时器例程定时器相关函数定时器例程 什么是定时器 定时器(Timer)最基本的功能就是定时,比如定时翻转LED灯,定时向串口发送数据等。除此之外…...
MongoDB +Dataframe+excel透视表
读取MongoDB中的表 from pymongo import MongoClient import pandas as pd client MongoClient(IP地址, 27017)db client[AOI] collection db[表名] #替换为实际的名称 document collection.find({time:{$gte:2023-08-15 15:26:06}})#筛选数据 df pd.DataFrame(list(docu…...
PostgreSQL日期相关
PostgreSQL日期相关 PostgreSQL日期相减得到整数 PostgreSQL日期相减得到整数 天数相减得到整数,执行下面的SQL: select to_number(date_trunc(day,2023-08-18 00:00:00::TIMESTAMP - 2023-08-10 00:00:00::TIMESTAMP INTERVAL 1 day)::text, 9999999…...
C++编程法则365天一天一条(8)const_cast去除cv限定
文章目录 1、使用场景2、关于const_cast的陷阱3、总结const_cast主要用于去除cv限定,且在C++提供的4个类型转换运算符里,只有const_cast可以去除或者添加cv属性。 1、使用场景 用法如下: const_cast< target-type >( expression ) 两个可能是多级指针且指向相同类型…...
某网站DES加密逆向分析实战
文章目录 一、抓包分析二、加密分析一、重写加密 一、抓包分析 分析站点: aHR0cDovL2VpcC5jaGFuZmluZS5jb20v 首先我们提交一下登陆信息: 搜索j_password查看加密函数: 把上图搜索到的encryptPassword函数拿出来分析一下: function encryptP…...
面向对象的理解
想要对象了?没问题,new一个就好了。 但是,new太多对象,对象也会生气的哦。 你瞧,她来了 从两段代码发现端倪 我们来计算一个矩形的面积,看看这两段代码有什么区别呢? 第一段: con…...
java ssl加密发送邮件
通过25端口发送邮件不安全,改为ssl加密方式发送邮件,比较常见的2中实现类发送邮件如下所示。 1、JavaMailSenderImpl 类 使用该实现类发送邮件,ssl加密使用端口号为465,借助Properties类设置ssl的各种配置。 SysUserEntity user…...
SpringBoot-yml配置文件的使用与优势
目录 一、什么是yml配置文件? 二、如何在SpringBoot中使用yml配置文件? 三、如何在SpringBoot中注入yml配置文件的属性? Value注解 ConfigurationProperties注解 四、yml配置文件与properties配置文件的区别和优势 区别 优势 五、总结…...
Layer Normalization(层规范化)
详细内容在这篇论文:Layer Normalization 训练深度神经网络需要大量的计算,减少计算时间的一个有效方法是规范化神经元的活动,例如批量规范化BN(batch normalization)技术,然而,批量规范化对小批…...
redisson参数配置
文章目录 pom配置链接配置建议 pom <!-- 引入spring-data-redis组件 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><!-- 因springboot2.x…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
