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执行的,与前者是反着来的,也就是先进后出。

相关推荐
H5css�海秀4 小时前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
SuniaWang4 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
韩立学长5 小时前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
sheji34165 小时前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
代码栈上的思考6 小时前
消息队列:内存与磁盘数据中心设计与实现
后端·spring
程序员小假6 小时前
我们来说一下 b+ 树与 b 树的区别
java·后端
Meepo_haha7 小时前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
sheji34167 小时前
【开题答辩全过程】以 基于springboot的房屋租赁系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
加农炮手Jinx8 小时前
Flutter for OpenHarmony:postgrest 直接访问 PostgreSQL 数据库的 RESTful 客户端(Supabase 核心驱动) 深度解析与鸿蒙适配指南
数据库·flutter·华为·postgresql·restful·harmonyos·鸿蒙
Victor3568 小时前
MongoDB(57)如何优化MongoDB的查询性能?
后端