Java --- SpringMVC 的 @RequestMapping 注解
一、@RequestMapping 注解功能
@RequestMapping 注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。
SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。



原因就是这个映射关系是唯一的,但在工程中这个是重复的。
二、@RequestMapping 注解位置
@RequestMapping 标识在类上:设置映射请求的请求路径的初始信息。
@RequestMapping 标识在方法上:设置映射请求的请求路径的具体信息
index.html 页面
三、@RequestMapping 注解的 value 属性
1、@RequestMapping 注解的 value 属性是通过请求的请求地址匹配请求映射
2、@RequestMapping 注解的 value 属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求。
3、@RequestMapping 注解的 value 属性必须设置,至少通过请求地址匹配请求映射
测试代码:
四、@RequestMapping 注解的 method 属性
@RequestMapping 注解的 method 属性通过请求的请求方式(get 或 post)匹配请求映射。
@RequestMapping 注解的 method 属性是一个 RequestMethod 类型的数组,表示该请求映射能够匹配多种请求方式的请求。
当前请求的请求地址满足请求映射的 value 属性,但是请求方式不满足 method 属性,则浏览器报 405;
在默认请求方式下的 post,get 都能请求成功
controller 层代码不变。
指定使用 get 请求:
当访问 post 请求时报错

根据需要可以设置多种请求方式

1、对于处理指定请求方式的控制器方法,SpringMVC 中提供了 @RequestMapping 的派生注解
处理 get 请求的映射使用 GetMapping,处理 post 请求的映射使用 PostMapping,处理 put 请求的映射使用 PutMapping,处理 delete 请求的映射使用 DeleteMapping。
2、常用的请求方式有 get,post,put,delete
目前浏览器只支持 get 和 post 请求,若 from 表单在提交时,使用 method 设置其他请求方式,则都按默认请求方式 get 处理。
若要发送 put 和 delete 请求,则需要通过 Spring 提供的过滤器 HiddenHttpMethodFilter。



五、@RequestMapping 注解的 params 属性
@RequestMapping 注解的 params 属性通过请求参数匹配请求映射
@RequestMapping 注解的 params 属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系。
"param":要求请求映射所匹配的请求必须携带 param 请求参数。
"!param":要求请求映射所匹配的请求不能携带 param 请求参数。
"param=value":要求请求映射所匹配的请求必须携带 param 请求参数且 param=value。
"param!=value":要求请求映射所匹配的请求必须携带 param 请求参数且 param!=value。
当传入参数匹配不上时就会报浏览器 400 错误:

六、@RequestMapping 注解的 headers 属性
@RequestMapping 注解的 headers 属性通过请求的请求头信息匹配请求映射。
@RequestMapping 注解的 headers 属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系。
“header”:要求请求映射所匹配的请求必须携带 header 请求头信息。
“!header”:要求请求映射所匹配的请求不能携带 header 请求头信息。
“header”:要求请求映射所匹配的请求必须携带 header 请求头信息且 header=value。
“header”:要求请求映射所匹配的请求必须携带 header 请求头信息且 header!=value。
若当前请求未满足 @RequestMapping 注解的 value 和 method 属性,但是不满足 headers 属性,页面显示 404 错误。

版权声明: 本文为 InfoQ 作者【鸭鸭yyds】的原创文章。
原文链接:【http://xie.infoq.cn/article/6f0f009ea3ee2a26283810060】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论