SSM6 11-27 SpringMvc过滤器和异常处理

try catch:处理异常

throw/throws:不处理 抛出

jvm中断程序运行 打印错误信息

web:经典三层模型:

dao(mapper)

service

web层

异常抛给web层Controller类的方法,每个方法可能处理异常,可能处理异常代码相似,造成重复代码重复编写

web层再往上抛     ->  前端控制器

SpringMVC处理异常机制如下

异常处理器实现:

  • 第一种方式:实现SpringMVC提供的全局异常处理器接口HandlerExceptionResolver
  • 第二种方式:基于注解@ControllerAdvice(标记的类,作为Controller类的通知(增强)类),底层是AOP模式,那么就会很灵活,这个通知类,不需要实现某个接口,继承某个类

第一种方式:

1.异常处理

1.异常分类:

1)系统异常(jdk自带异常),程序有问题

2)业务异常(自定义异常),用户不正当操作导致。

在我们编写的类的方法中  使用throw new自定义一查各类

判断异常类型 -> instanceof

往model里添加不同数据

把这个类交给spring管理

第二种方式

去掉上面这个

MyBookException.java

异常的advice异常通知类 对controller类的方法的增强

@ControlleAdvice

public class BookExceptionController{

@ResponseBody
public Map handleException(BookBaseException){

}



}

throw throws throwable

在处理异常的方法上使用@ExceptionHandler表示这个方法处理那种异常

如果响应json数据给前端,在方法上添加@ResponseBody注解

登录

这个实现类需要注入mapper

异常类

2.文件上传组件

SpringMVC对commits-fileupload的封装
提供文件上传组件: CommonsMultipartResolver 使用的时候,只需要在springmvc的配置文件中配置

提供了接收文件类型的数据类型: MultipartFile

前端要求:

  1. 提交方式: post
  2. 如果是ajax请求的content-type: multipart/form-data 
  3. 表单提交: enctype= multipart/form-data  

controller 进行参数绑定

后台要求

common-fileUpload

  • 导入依赖
  • 在springmvc的配置文件中配置CommonsMultipartResolver
  • 在Controller方法使用MultipartFile接收文件

3.拦截器(Springmvc  过滤器是javaweb的)

Interceptor

filter

1.过滤器是Javaweb的技术,只要是javaWeb项目就可以使用,拦截器是SpringMVc框架的,项目中添加SpringMVC依赖,才可以使用

2.过滤器配置/*,拦截所有资源请求,拦截器,/** 拦截的经过前端控制器的请求

3.执行时间,过滤器先执行,拦截器是否执行

没有经过前端控制器不会拦截


拦截器的实现

1.编写一个类实现拦截器接口Handlerlnterceptor

亦可以是作为异常处理器使用

排除请求 那些url(自定义)

拦截器里面的方法一定都执行吗?它们的顺序是什么?

一个拦截器的执行流程

客户端的请求先经过拦截器的PreHandler()->返回true放行请求可以继续请求,返回false时请求结束,

下一个就是执行处理器当中的方法->再进入拦截器PostHandle()->再走到拦截器的AfterCompletion

->如果上一步都完成了,说明请求完成

多个浏览器的

谁先配谁先执行 -Ainterceptor ->Binterceptor  此时A  B都放行 都会到目标资源

规律:

1. preHandle()执行顺序与mvc:interceptor顺序一致, postHandl
afterCompletion()与
mvc:interceptor顺序相反

2.处理器能不能执行,要求所有的拦截器的preHandle()返回true才执行

3.只要某个拦截器的preHandle()方法返回true,这个拦截器的afterCompletion()一定执行

拦截器中Prehandle()用的比较多

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/234091.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Small Data Transmission(一) overview

在R16之前,RRC Inactive 不支持数据传输,UE在RRC inactive状态有data要传输时,就要通过RRC resume过程,转换到RRC connected mode才能进行数据传输。 有时候UE要传输的数据包可能会很小,且发送频率也很低,如果每次发送数据都要进行上述过程,就会增加不必要的功耗和信令…

Adobe Illustrator绘图解决卡顿问题

最近在用AI做矢量图,但是遇到了一个很难搞的问题,当我们需要分辨率较高的图片的时候,Python用Matplotlib生成pdf时dpi参数会设置为600及以上,但这样的话就造成pdf文件过大以及AI卡顿两个问题,比如,下午生成…

【VScode】超详细图片讲解下载安装、环境配置、编译执行、调试

这里是目录 VScode是什么?VScode的下载和安装环境介绍安装中文插件 配置VScodeC/C开发环境下载和配置MinGW-w64 编译器套件下载:配置: 安装C/C插件在VScode上编写代码设置C/C编译选项创建执行任务编译执行如果想写其他代码在同一个文件夹在不…

.Net 8 Blazor下 Auto交互渲染模式试用

一、环境 C:\Users\zhuji>dotnet --version 8.0.100C:\Users\zhuji>dotnet --list-sdks 5.0.403 [C:\Program Files\dotnet\sdk] 6.0.404 [C:\Program Files\dotnet\sdk] 8.0.100 [C:\Program Files\dotnet\sdk] Microsoft Visual Studio Enterprise 2022 (64 位) - Cu…

如何在服务器上运行python文件

目录 前置准备 详细步骤 一,在服务器安装Anaconda 下载安装包 上传文件到服务器 安装环境 二,创建虚拟环境 创建环境 三,测试执行python文件 执行python文件 查看进程状态 总结 前置准备 如何在个人服务器上运行python文件&#x…

C陷阱与缺陷——第3章 语义陷阱

1. 指针和数组 C语言中只有一维数组,而且数组的大小必须在编译器就作为一个常数确定下来,然而在C语言中数组的元素可以是任何类型的对象,当然也可以是另外的一个数组,这样,要仿真出一个多维数组就不是难事。 对于一个…

【10】Python函数专题(上)

目录 1.什么是函数2.函数的参数2.1形参 和 实参2.2函数的传递方式2.3 不定长参数2.3.1 可变位置参数`*args`2.3.2可变关键字参数`**kwargs`2.3.3 小结2.4 参数的解包(也称拆包)1.什么是函数 在Python中,函数是一段可重复使用的代码块,用于执行特定任务。通过将代码封装在函…

Hive:从HDFS回收站恢复被删的表

场景 一张手工维护的内部表,本来排查没有使用,然后删掉了,发现又需要使用,只能恢复这张表了。 1.确认HDFS是否开启回收站功能 2.查看回收站中的数据 被删除的数据会放在删除数据时使用的用户目录下,如:使…

2023年掌控安全学院CTF暖冬杯——数据流分析

前言:打工仔一枚,第一波上新的3题misc 做完了 再打ISCTF随便记录一下 PS:环境关了,题目描述忘记了,反正就是找flag。 筛选HTTP数据流 导出数据流慢慢看 ctrl F 搜flag 看到一条 有flag.txt 的数据 导出另存.zip 这里…

Git提示 Connection closed by remote host

问题如下图: 解决: 删除./ssh目录下的config文件,如下图config文件是新增的 原因:不知道什么原因,连接外网后突然断开或导致自动增加config文件。

FPGA驱动CS4344 VHDL例程

CS4344是一款非常简单的I2S立体声24bit D/A芯片,采样率高达192KHz,相对于ADAU1761复杂的寄存器配置来说,CS4344非常友好,无需配置寄存器,只要按I2S时序输入数据,即可实现立体声输出,且10PIN TSS…

数据挖掘实战-基于word2vec的短文本情感分析(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…