1.@RequestMapping概述
Spring MVC使用@RequestMapping注解配置请求路径,它可以指定哪个类(或者方法)作为请求的处理器。
1.1 @RequestMapping可以标注的位置
-
标注在方法上
@Controller public class RequestMappingController { @RequestMapping("/testRequest") public String testRequest(){ return "success"; }
-
标注在类和方法上
@Controller @RequestMapping(“/user”) public class RequestMappingController { @RequestMapping("/testRequest") public String testRequest(){ return "success"; }
2.@RequestMapping的属性
属性名 | 作用 |
---|---|
value | 默认,请求路径,支持Ant风格 |
method | 请求方式,默认支持所有请求方式,枚举类型RequestMethod |
params | 请求参数,可以指定必须提供的参数名;单个使用字符串,多个使用集合; |
headers | 请求头 |
2.1 value属性
@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
@Controller
public class RequestMappingController {
@RequestMapping(value = {"/testRequest","/test"})
public String testRequest(){
return "success";
}
}
Ant风格
通配符 | |
---|---|
? | 匹配任何单字符 |
* | 匹配0或者任意数量的字符 |
** | 匹配0或者更多的目录 |
URL路径 | 说明 |
---|---|
/project/*.a | 匹配项目根路径下所有在project路径下的.a文件 |
/app/p?ttern | 匹配项目根路径下 /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
/**/example | 匹配项目根路径下 /project/example, /project/foow/example, 和 /example |
/project/**/dir/file. | 匹配项目根路径下/project/dir/file.jsp, /project/foow/dir/file.html,/project/foow/bar/dir/file.pdf |
/**/*.jsp | 匹配项目根路径下任何的.jsp 文件 |
2.2 method属性
- @RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求
- 浏览器向服务器发送请求,请求方式有很多GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE。可以使用 method 属性来约束请求方式。
@Controller
public class RequestMappingController {
@RequestMapping(value = "/testRequest",method = RequestMethod.GET)
//多种请求方式:method = {RequestMethod.GET,RequestMethod.POST}
public String testRequest(){
return "success";
}
}
2.3 header属性
@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射
@RequestMapping注解的headers属性是一个字符串类型的数组
四种表达式设置请求头信息和请求映射的匹配关系:
-
header:要求请求映射所匹配的请求必须携带header请求头信息"
-
!header:要求请求映射所匹配的请求必须不能携带header请求头信息
-
header=value:要求请求映射所匹配的请求必须携带header请求头信息且header=value.
-
header!=value:要求请求映射所匹配的请求必须携带header请求头信息且header!=value
@RequestMapping(value = "/test",headers = "Host = localhost:8081")
public String test(){
return "success";
}
说明:
-
headers=“Referer=http://localhost:8080/test/” :
表示需要有请求头Referer=http://localhost:8080/SpringMVCDemo/才返回响应,否则报404错误。可以有效防止外站盗链接。
-
设置headers = “Host = localhost:8081”,那么http://localhost:8080/……请求访问,则会报404
2.4 params属性
- @RequestMapping注解的params属性通过请求的请求参数匹配请求映射
- @RequestMapping注解的params属性是一个字符串类型的数组
四种表达式设置请求参数和请求映射的匹配关系
-
“param”:要求请求映射的请求必须为包含 param的请求参数
-
“!param”:要求请求映射的请求是不能包含param的请求参数
-
“param=value”:要求请求映射的请求必须包含 param 的请求参数,且 param 参数的值必须为 value
-
“param!=value”: 要求请求映射的请求是必须包含 param 的请求参数,其值不能为 value。
@RequestMapping(value = "/test",params = {"username","password"})
public String test(){
return "success";
}
注意:我们设置了params属性,就意味着该请求映射的请求必须包含username,password才能够请求成功,否则报错404