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…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...