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风格的优势在于路径的书写比较简便,并且通过地址无法得知做的是何种操作,可以隐藏资源的访问行为。

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BugPoet

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值