Spring MVC的核心类和注解——@RequestMapping注解(三)请求映射方式

一、请求映射方式的分类

        基于注解风格的Spring MVC,通过@RequestMapping注解指定请求映射的URL路径。URL路径映射常用的方式有基于请求方式的URL路径映射、基于Ant风格的URL路径映射和基于REST风格的URL路径映射。接下来分别对这三种请求映射方式进行详细讲解。

a. 基于请求方式的URL路径映射

         除了可以使用@RequestMapping注解来限定客户端的请求方式之外,从Spring 4.3版本开始,还可以使用组合注解完成客户端请求方式的限定。组合注解简化了常用的HTTP请求方式的映射,并且更好的表达了被注解方法的语义。

二、Spring MVC组合注解

@GetMapping:匹配GET方式的请求。

@PostMapping:匹配POST方式的请求。

@PutMapping:匹配PUT方式的请求。

@DeleteMapping:匹配DELETE方式的请求。

@PatchMapping:匹配PATCH方式的请求。

三、@GetMapping用法示例

        接下来以@GetMapping为例讲解组合注解的用法,@GetMapping是@RequestMapping(method = RequestMethod.GET)的缩写,使用组合注解替代@RequestMapping注解,可以省略method属性,从而简化代码。@GetMapping用法示例代码如下所示。

@GetMapping(value="/firstController")
public void sayHello(){...
}

b. 基于Ant风格的URL路径映射

        Spring MVC支持Ant风格的URL路径映射, 所谓Ant风格其实就是一种通配符风格,可以在处理器映射路径中使用通配符对访问的URL路径进行关联。Ant风格的通配符有以下3种,分别是:?匹配任何单字符;*匹配0或者任意数量的字符;**匹配0或者多级目录。

四、Ant风格通配符的路径匹配

通配符

URL路径

通配符匹配说明

/ant1?

匹配项目根路径下/ant1[anyone]路径,其中[anyone]可以是任意单字符,即/ant1后有且只有1个字符。如/ant12、/ant1a。

*

/ant2/*.do

匹配项目根路径下/ant2/[any].do路径,其中[any]可以是任意数量的字符。如/ant2/findAll.do、/ant2/.do。

*

/*/ant3

匹配项目根路径下/[onemore]/ant3路径,其中[onemore]可以是数量多于0个的任意字符。如/a/ant3、/findAll/ant3,但是字符数量不能为0个,并且目录层数必须一致,如//ant3、/findAll/a/ant3。

**

/**/ant4

匹配项目根路径下/[anypath]/ant4路径,其中[anypath]可以是0或者多层的目录。如/ant4、/a/ant4、/a/b/ant4。

**

/ant5/**

匹配项目根路径下/ant5/[anypath]路径,其中[anypath]可以是0或者多层的目录。如/ant5、/ant5/a、/ant5/a/b。

五、映射路径使用多个通配符情况

        当映射路径中同时使用多个通配符时,会有通配符冲突的情况。当多个通配符冲突时,路径会遵守最长匹配原则(has more characters)去匹配通配符,如果一个请求路径同时满足两个或多个Ant风格的映射路径匹配规则,那么请求路径最终会匹配满足规则字符最多的路径。例如,/ant/a/path同时满足 /**/path和/ant/*/path匹配规则,但/ant/path最终会匹配“/ant/*/path”路径。

c.基于RESTful风格的URL路径映射

        RESTful是按照REST风格访问网络资源,简单说RESTful就是把请求参数变成请求路径的一种风格。 而REST(Representational State Transfer)是一种网络资源的访问风格,规范对了网络资源的访问方式。REST所访问的网络资源可以是一段文本、一首歌曲、一种服务,总之是一个具体的存在。每个网络资源都有一个URI指向它, 要获取这个资源,访问它的 URI 就可以,因此URI 即为每一个资源的独一无二的标识符。

六、传统风格与RESTful风格访问URL格式的不同

传统风格访问的URL格式如下所示。

http://.../findUserById?id=1

而采用RESTful风格后,其访问的URL格式如下所示。

http://.../user/id/1

        需要注意的是,RESTful风格中的URL不使用动词形式的路径,例如,findUserById表示查询用户,是一个动词,而user表示用户,为名词。 

七、RESTful风格的基本请求操作

        RESTful风格在HTTP请求中,通过GET 、POST 、PUT和DELETE 4个动词对应四种基本请求操作,具体如下所示。

•GET用于获取资源

•POST用于新建资源

•PUT用于更新资源

•DELETE用于删除资源

八、RESTful风格四种请求的约定方式  

URL路径

请求方式

说明

http://localhost:8080/chapter11/user/1

HTTP GET

获得参数1进行查询user操作

http://localhost:8080/chapter11/user/1

HTTP DELETE

获得参数1进行查询user操作

http://localhost:8080/chapter11/user/1

HTTP PUT

获得参数1进行查询user操作

http://localhost:8080/chapter11/user

HTTP POST

新增user操作

九、使用RESTful风格的优势

        约定不是规范,约定是可以打破,所以称为RESTful风格,而不是RESTful规范。使用RESTful风格的优势在于路径的书写比较简便,并且通过地址无法得知做的是何种操作,可以隐藏资源的访问行为。

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

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

相关文章

受风头痛的几种情况

受风是指人体外感风邪引起的疾病,不同的病因需要采用相应的治疗方法进行调理和治疗。风为六淫之一,具有轻扬开泄的特性,易伤人肌表,引起头痛等症状。 中医认为头疼受风是由于外感引起的,头疼可以分为外感和内伤两个原…

【TB作品】体重监控系统,ATMEGA16单片机,Proteus仿真

机电荷2018级课程设计题目及要求 题1:电子称重器设计 功能要求: 1)开机显示时间(小时、分)、时分可修改; 2)用滑动变阻器模拟称重传感器(测量范围0- 200g),数码管显示当前重量值,当重量值高于高 值时,红灯长亮; 3)当重量值低于低值时,黄灯长亮; 4)当重量值在正常值时,绿灯亮; 5…

代码随想录打卡第十五天

代码随想录–二叉树部分 day15 二叉树第三天 文章目录 代码随想录--二叉树部分一、力扣110--平衡二叉树二、力扣257--二叉树的所有路径三、力扣404--左叶子之和四、力扣222--完全二叉树的节点个数 一、力扣110–平衡二叉树 代码随想录题目链接:代码随想录 给定一个…

关于DB_CREATE_FILE_DEST初始化参数

DB_CREATE_FILE_DEST指定了OMF的默认位置。 OMF指 Oracle Managed Files,OMF指定一个文件系统中的目录,数据库会在此目录中自动创建、命名和管理数据库对象级别的文件。 OMF用的较多的是数据文件。 来看一个例子。已有一个PDB:orclpdb1&am…

springboot学生档案信息管理系统-计算机毕业设计源码96509

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

GBase 8c V5 主备式部署手册

GBase 8c V5 主备式部署实操 一、前言二、环境准备三、安装四、数据库启停五、卸载六、连接和 SQL 测试 一、前言 GBase 8c 是 GBASE公司(天津南大通用数据技术股份有限公司)自主研发的一款多模多态的企业级分布式数据库:支持行存、列存、内存…

JAVA程序打包时报错,但是运行时正常。

报错:Could not transfer artifact com.alibaba:fastjson:pom:1.2.83 from/to clojars... 背景:需要将fastjson从1.2.70升级到1.2.83;并且编译环境是局域网不可以连接互联网;每个项目组都是独立的私有仓库。 操作:在本…

Failed to download metadata for repo ‘docker-ce-stable‘

这个问题是由于在安装 clamav 和 clamav-update 时,无法下载 Docker CE Stable 库的元数据,可能的原因是网络连接超时或访问该网址受限。以下是一些可能的解决办法: 检查网络连接: 确保服务器的网络连接正常,尤其是与互…

海外发稿: 秘鲁-区块链新闻媒体通稿宣发

秘鲁媒体单发 随着全球化的不断深入,海外发稿已经成为众多企业宣传推广的重要方式之一。而在海外发稿的选择中,秘鲁媒体的地位尤为重要。秘鲁作为南美洲的重要国家之一,拥有众多知名媒体平台,包括diariodelcusco、serperuano、el…

mysql8 导入导出工具类,支持windows 和linux

概述 1)导入导出工具类 支持windows 和linux,详见第3部分 2)导入、导出参数在 dbeaver 中应用,详见第4部分 整理原因: 1)中文乱码 --default-character-setutf8 2)BLOB 导出后,导入失败 --he…

Qt(二)弹窗类 颜色对话框 字体对话框 资源文件

文章目录 一、QDebug类和QMessagebox类(一)QDebug类:打印调试类(二)QMessagebox类:弹窗类2. 修改组件图标(1)通过ui界面(2)通过QIcon的方式(3&…

数据结构-字符串

字符串 什么是字符串? 字符串是在任何编程语言中都非常重要的一种数据类型。 在 Python 中,字符串是由引号包裹的任意字符组成的不可变序列,用于表示文本类型数据。 字符串定义 字符串可以通过使用 单引号 或 双引号 或 三引号 来定义&a…

【笔试记录】腾讯音乐 | 20230903 | cpp (更新ing)

1 完美数 1.1 题目描述 小红定义一个数为“完美数”&#xff0c;当且仅当该数仅有一个非零数字。例如 5000, 4, 1, 10, 200 都是完美数。 小红拿到了一个大小为 n&#xff08;2 < n < 2000&#xff09;的数组 a&#xff0c;她希望选择数组中的两个元素&#xff08;1 …

代码随想录算法训练营第75天:总结篇[1]

代码随想录算法训练营第75天&#xff1a;总结篇 代码随想录姑且是都过了一遍了&#xff0c;最开始了解到的时候还不会c语法&#xff0c;跟着学习还是有难度的&#xff0c;也很难坚持着去写题&#xff0c;后面决定加入训练营与大家齐头并进&#xff0c;刚开始气氛很好&#xff…

【CentOS 7 上安装 Oracle JDK 8u333】

文章目录 下载 Oracle JDK 8u333&#xff1a;上传 RPM 包到服务器安装 Oracle JDK设置 JAVA_HOME 环境变量验证 下载 Oracle JDK 8u333 访问 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 找到 JDK 8u333 版本&#xff0c;并下载适用于 L…

TTS文本转声音:fish-speech 推理、requests访问接口案例

参考: https://hub.docker.com/r/lengyue233/fish-speech https://speech.fish.audio/inference/#http-api 下载 下载模型: HF_ENDPOINT=https://hf-mirror.com huggingface-cli download fishaudio/fish-speech-1.2 --local-dir checkpoints/fish-speech-1.2下载的内容有…

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题&#xff0c;解决起来会费时间&#xff0c;做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的&#xff0c;而且有主启动函数也不能run 右键pom文件&#xff0c;点击Add as Maven Project 如果…

【在大模型RAG系统中应用知识图谱】

【引子】 关于大模型及其应用方面的文章层出不穷&#xff0c;聚焦于自己面对的问题&#xff0c;有针对性的阅读会有很多的启发&#xff0c;本文源自Whyhow.ai 上的一些文字和示例。对于在大模型应用过程中如何使用知识图谱比较有参考价值&#xff0c;特汇总分享给大家。 在基于…

c语言的字符串拷贝函数strcpy()的行为

/*** 字符串函数* 符串复制函数* strcpy()和strncpy()* 覆盖行为** strcpy()简单易用&#xff0c;但需要程序员确保目标缓冲区足够大&#xff0c;以避免缓冲区溢出。* strncpy()提供了限制复制字符数的能力&#xff0c;增加了安全性&#xff0c;* 但使用时需注意目标字符串可能…