Spring MVC之@RequestMapping

  @RequestMapping注解用来映射 URL 到控制器类或方法上,指示Spring用那一个类或方法来处理请求动作。
  当用来注解一个控制器类时,所有方法都将映射为相对类级别的请求,再找该类下方法级别的映射,最终的 URI类的映射地址拼接上方法映射地址

  

@RequestMapping 注解属性

value 属性

通过该属性将URL映射到类或方法上,该属性是 @RequestMapping 注解的默认属性,值是个字符串数组,

  • 如果只有唯一的属性,则可以省略属性名,如下示例,
  • 如果有超过一个属性,则必须写上 value 属性名称。
  • 该属性也可以是一个空字符串,则 URL 映射的是项目根路径,与单个斜杠映射相同。
    1
    2
    3
    4
    RequestMapping(value={"/admin","/root"})//指定属性名,多个值
    RequestMapping("/admin")//省略属性名
    RequestMapping("/")//根路径
    RequestMapping("")//空字符串,根路径

method 属性

该属性用于指示该方法对那些 HTTP 请求方式做处理。
如果没有指定,则可以处理任意的 HTTP 请求方式。
该属性也可以设置多个值。

1
2
@RequestMapping(value="/user", method=RequestMethod.POST)
@RequestMapping(value="/user", method={RequestMethod.POST, RequestMethod.GET})

consumes 属性

该属性指定处理请求的提交内容类型(Content-Type)

1
@RequestMapping(value = "/user", method=RequestMethod.POST, consumes="application/json")

produces 属性

定制返回response的媒体类型和字符集。仅处理指定的 request 请求头(Accept)中所包含的类型,同时以相同的内容类型返回。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.entity.User;
import com.service.impl.DemoServiceImpl;

/**
* @RestController 声明的控制器,表示返回的是指定格式的数据
* @author Rocky
*
*/

@RestController
@RequestMapping("/rest")
public class RestControllerDemo {
@Autowired
DemoServiceImpl demoServiceImpl;

//返回text
@RequestMapping(value = "/getText", produces = "text/plain;charset=UTF-8")
public String getText() {
return demoServiceImpl.saySomething();
}
//返回json
@RequestMapping(value = "/getJson", produces = "application/json;charset=UTF-8")
public User getJson() {
return new User("张三", 25);
}
//返回xml
@RequestMapping(value = "/getXML", produces = "application/xml;charset=UTF-8")
public User getXML(User user) {
return new User("李四",35);
}
}

params 属性

指定 request 中必须包含某些参数值时,才让该方法处理。

1
2
//处理名为myParam,值为myValue的请求
@RequestMapping(value="/user", method=RequestMethod.POST, params="myParam=myValue")

相关参考

  1. Spring Web MVC 官方文档:1.3.2. Request Mapping
作者

光星

发布于

2018-01-02

更新于

2022-06-17

许可协议

评论