@RequestMapping
源码
package org.springframework.web.bind.annotation;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
String name() default "";
@AliasFor("path")
String[] value() default {};
@AliasFor("value")
String[] path() default {};
RequestMethod[] method() default {};
String[] params() default {};
String[] headers() default {};
String[] consumes() default {};
String[] produces() default {};
}
具体使用
- 控制器中方法不能对应同一请求路径
- 标识位置
- 标识一个类:设置映射请求的请求路径的初始信息
- 表示一个方法:设置映射请求的请求路径的具体信息
- 如以下请求路径为 “/text/target”
@Controller
@RequestMapping(value = "/text")
public class controller {
@RequestMapping(value = "/target")
public String toTarget(){
return "target";
}
}
-
value属性
-
通过请求地址匹配请求映射
-
数据类型为字符串型数组,可以匹配多个请求路径(满足其中一个即可)
@AliasFor("value") String[] path() default {};
-
必须设置value属性(其他属性都可以不设置)
-
-
method属性
-
通过请求方式(get或post等)匹配请求映射
public enum RequestMethod { GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE }
-
数据类型为字符串型数组,可以匹配多个请求路径(满足其中一个即可)
RequestMethod[] method() default {};
-
不设置默认任何请求方式都允许
-
派生注解(代替method)
- 处理get方式的请求映射:
@GetMapping
- 处理post方式的请求映射:
@PostMapping
- 处理put方式的请求映射:
@PutMapping
- 处理delete方式的请求映射:
@DeleteMapping
- 处理get方式的请求映射:
-
-
params属性
param
:要求请求映射所匹配的请求必须携带param参数!param
:要求请求映射所匹配的请求不能携带param参数param = value
:要求请求映射所匹配的请求必须携带param参数,且参数为valueparam != value
:要求请求映射所匹配的请求必须携带param参数,但是参数不为value
-
headers属性
header
:要求请求映射所匹配的请求必须携带header参数!header
:要求请求映射所匹配的请求不能携带header参数header = value
:要求请求映射所匹配的请求必须携带header参数,且参数为valueheader != value
:要求请求映射所匹配的请求必须携带header参数,但是参数不为value
风格
SpringMVC支持ant风格
?
:任意单个字符*
:任意的0个或多个字符**
:任意的一层或多层目录(只能使用/**/XXX
的形式)
SpringMVC支持占位符
@PostMapping(value = "/getAllStuInfo{Page}")
public CommonResult getAllStuInfo(@PathVariable("Page")Integer page) {
return "getAllStuInfo";
}
@PathVariable
:获取占位符值的单一方式,必须含value值
含占位符请求方式
原始方式 | rest风格 | 功能 |
---|---|---|
/queryBook?id=1 | /book/1 | 查询1号图书 GET |
/deleteBook?id=1 | /book | 删除1号图书 DELETE |
/updateBook?id=1… | /book/1 | 更新1号图书 PUT |
/addBook | /book/1 | 增加图书 POST |