SpringMVC—REST风格 & Restful入门案例 & 拦截器简介 & 拦截器入门案例 & 拦截器参数 & 拦截器链配置

(一) Rest风格:

(1)概念:

表现形式状态转换,说白了就是把网址的格式换了,传统的网址格式会看出来具体的操作,而使用Rest风格编写的网址,会让别人看不出来执行了什么操作,例如:

单从网址上看不出来操作,但与请求方式结合就知道了。常见的Rest支持的请求方式有四个。

(2) 四大基本访问动作:

1.查询---Get

2. 删除---Delete

3. 修改---Put

4. 新增---Post

Rest风格网址和关键字结合,就可以得知具体执行的是什么操作。

复制代码
Restful:就是说日后有人跟你提起咱们用restFul开发,说的就是使用rest风格来开发代码。

(二)Restful入门案例:

(1)修改访问路径,在restMapping()括号中加上method参数,并为该参数赋值

(2)若需要引入路径的参数,则需要在访问路径中用{参数名}设置好,且与下方方法中的参数名保持一致,最后加上Pathvariable注解(表示这是一个路径参数)。如下图:

restful快速开发:

主要体现在注解的合并抽取 以及字段的删除 方面。
(1)注解的合并:

类似RequestMapping( method = RequestMethod.GET)这样的注解,直接被合并成

@GETMapping()

(2)抽取:

如果多个方法都写了@RequestBody标签或者是@RequestMapping标签,那么就可以把这俩标签移到类前面,而把方法上的标签删除

而又可以把这两个注解替换成一个@RestController注解,这个注解内部是包含了RequestMapping和RequestBody标签的。

(3)字段的删除

把RestMapping提取到类前面之后,把表示路径的字段也加进去,然后把方法里面的路径删了,如果有路径参数就写在括号内:

如果是单个参数,可以使用路径参数注解Pathvirable,如果有多个参数,可以使用Pojo类型传参

(三)拦截器简介:

(1)概念

一种工作机制,用来拦截请求的,但不是不让访问进去,而是在访问的时候需要执行某部分代码,说白了就是"要想从此过,留下买路财"

图中的红色问号框就是SpringMVC对资源设置的两道拦截器,要求用户在访问Controller之前和之后都需要做一些设计。例如权限访问,得先检查你有无权限再进入。
(2)作用:

2.1 阻止原始方法的执行

2.2 在调用待执行的方法前/后得先执行某段代码
(3)与Filter过滤器的区别:

复制代码
1.Filter过滤器属于Servlet技术,而拦截器属于SpringMVC技术。
2.两者的技术所在地不同,所能调用的方法也不同。filter不一定能调用拦截器本身的方法
3.filter对所有访问进行增强,而拦截器仅对SpringMVC的访问进行增强
什么是增强访问?
答:说白了,就是通过一系列的技术手段,使用户获得更好的进入体验,例如速度,安全性和便捷性上

(四)拦截器入门案例:

1.创建一个拦截器的实现类,在内部重写三个handle方法

2.创建SpringMVC配置类,扫描这个拦截器类

然后在配置类中注入拦截器对象,并设置拦截路径:

有一种简便方式,可以直接实现拦截器的注入,那就是在SpringMVC核心配置类中实现WebMVCCOnfiguer接口,但是这个类中仅有一个注入方法,框架不美观。

(五)拦截器参数

五大参数:

通过request,response 可以获取请求,响应数据,这俩参数就类似于Servlet的哪个request和response了
handle 封装了一系列属性和方法,通过获取handle对象,就可以利用反射获取一系列关于method的信息
ModleAndView 封装了一系列与页面跳转的相关数据,但由于现在都是返回json格式的数据,所以使用不多
ex就是Exception的对象,实际上是可以拿到在访问过程中抛出的异常对象的

拦截器链配置:

1.创建多个拦截器实现类

2.在SpringMVC配置类中按顺序添加拦截器,最终拦截器的的运行顺序依据添加的顺序而定。

一张图看清拦截器类的执行顺序。

如果第三个拦截器的prehandler方法返回的是false,则跳过第三个拦截器的post和after

如果第二个拦截器的prehandler方法返回的是false,则跳过第二和第三个拦截器的post和after方法。。。

所以prehandler方法的返回值决定是否会执行后面的posthandle和aftercompletion方法。

并且要注意:拦截器是按1 2 3 的顺序添加的,那么执行post和after的顺序就是按3 2 1执行的,与前者是反着来的,也就是先进后出。

相关推荐
阳光是sunny2 分钟前
LangGraph 核心概念详解:从编译到可视化
前端·人工智能·后端
zhangjw347 分钟前
第35篇:Spring Boot入门:自动配置+快速搭建,简化企业开发
java·spring boot·后端
geovindu23 分钟前
java: Backtracking Algorithm
java·开发语言·windows·后端·算法·回溯算法
lazy H1 小时前
从入门到日常开发,一篇文章掌握 Git 核心操作
git·后端·学习·github
GetcharZp9 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
weixin_4462608513 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
ttwuai14 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
用户83562907805114 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
用户99314415798414 小时前
微服务框架中获取用户信息
后端