springmvc注解@RequestMapping的作⽤及属性
⽬录
⼀、@RequestMapping注解的作⽤是什么?
1. @RequestMapping注解是web应⽤程序中最常被⽤到的注解之⼀,作⽤就是映射URL路径,将http的请求地址映射到控制器
(controller)类的处理⽅法上。
2. @RequestMapping注解可以定义在控制器类上,也可以定义在类⾥⾯的⽅法上。
定义类上:将http请求映射到该控制器上,规定初步的请求映射地址,相当于请求地址的⽗路径。
定义类⽅法上:进⼀步指定到控制器处理⽅法的映射关系,如果在控制器类上没有定义@RequestMapping注解,则直接将请求地址映射到处理⽅法上。
⽰例代码:
@RestControllerspringmvc的注解有哪些
@RequestMapping(value = "/api/v1/rabbit")
public class RabbitMqController
{
private static final Logger logger = Logger(RabbitMqController.class);
@Resource
private RabbitMqService rabbitMqService;
@RequestMapping(value = "/addexchange")
public Object addExchange(@RequestBody RabbitExchange rabbitExchange) {
logger.info("声明rabbit交换器接⼝成功,请求参数为:{}",JSONString(rabbitExchange));
Exchange exchange = ateExchange(rabbitExchange);
logger.info("创建rabbit交换器成功,返回参数为:{}",exchange);
return exchange;
}
}
注意:当在类上定义映射地址为"/api/v1/rabbit",⽅法上定义映射地址为"/addexchange",那么此时请求地址是
127.0.0.1:8081/wstro-web/api/v1/rabbit/addexchange,如果去掉类上的@RequestMapping(value =
"/api/v1/rabbit"),那么此时请求地址是127.0.0.1:8081/wstro-web/addexchange
⼆、@RequestMapping注解的属性有哪些?
@RequestMapping注解的属性有六种,分别是value、method、produces、consumes、header、params。这六种属性是与的关系,联合使⽤会使请求地址的映射更加精确。
1. value:指定请求的实际地址,像/action/info这样的。
2. method:指定请求的method类型, GET、POST、PUT、DELETE等。
3. produces:它的作⽤是指定返回内容的类型,只有当request请求头中Accept属性包含该produces指定的类型才能返回数据成功。
注意:请求头中国Accept代表发送端(客户端)希望接受的数据类型,⽐如:Accept:text/xml(application/json),代表客户端希望接受的数据类型是xml(json)类型。
4. consumes:它的作⽤是指定request请求提交的内容类型(Content-Type),例如application/json, text/html。注意:Content-
Type代表发送端(客户端|服务器)发送的实体数据的数据类型,⽐如:Content-Type:text/html(application/json),代表发送端发送的数据格式是html(json)。
5. params:指定request请求地址中必须包含某些参数值,才让该⽅法处理。当使⽤params属性时,你可以让多个处理⽅法处理同⼀
个URL请求地址,只需要设置请求地址的参数不同即可。⽀持简单的表达式:
----params = "params1":表⽰请求必须包含名为params1的请求参数;
----params = "!params1":表⽰请求不能包含名为params1的请求参数;
----params = "params1 != value1":表⽰请求必须包含名为params1的请求参数,但是其值不能是value1;
----params = {"params1 = value1", "param2"}:表⽰请求必须包含名为params1和params2两个请求参数,且params1的值必须为value1;
6.header:指定request请求中必须包含某些指定的请求头header的值,才能让该⽅法处理请求。
⽰例代码:
@RestController
@RequestMapping(value = "/api/v1/rabbit")
public class RabbitMqController
{
private static final Logger logger = Logger(RabbitMqController.class);
@Resource
private RabbitMqService rabbitMqService;
@RequestMapping(value = "/addexchange",
method = RequestMethod.POST,
consumes="application/json",
produces="application/json",
params = {"params=true"},
headers = {"Host=127.0.0.1"})
public Object addExchange(@RequestBody RabbitExchange rabbitExchange) {
logger.info("声明rabbit交换器接⼝成功,请求参数为:{}",JSONString(rabbitExchange));
Exchange exchange = ateExchange(rabbitExchange);
logger.info("创建rabbit交换器成功,返回参数为:{}",exchange);
return exchange;
}
}
说明:该代码⽰例中,@RequestMapping设置了⽗路径和⼦路径,value = "/addexchange"是⼦路径;method属性设置了POST请求⽅式,发送端设置实体数据的数据类型为consumes="application/json",produces指定的返回数据类型为application/json,params属性设置params=true,也就是说请求地址中必须要带着params=true参数;请求头header属性设置Host=127.0.0.1,必须本地请求才能请求成功,远程请求会失败。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。