开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情
@RequestMapping注解的params属性(了解)
-
@RequestMapping注解的params属性通过请求的请求参数匹配请求映射
-
@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
- "param":要求请求映射所匹配的请求必须携带param请求参数
例如:
@RequestMapping(value = {"/test"},params = {"name"})
客户端发送请求时,必须携带key为name的参数
- "!param":要求请求映射所匹配的请求必须不能携带param请求参数
@RequestMapping(value = {"/test"},params = {"!name"})
客户端发送请求时,不能携带key为name的参数,否则页面报400错误
- "param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value
@RequestMapping(value = {"/test"},params = {"name=zhangsan"})
客户端发送请求时,必须携带key为name的参数,参数值必须为zhangsan,否则报400错误
- "param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value
@RequestMapping(value = {"/test"},params = {"name!=zhangsan"})
客户端发送请求时,必须携带key为name的参数,但是参数的值不能是zhangsan
可以通过<a th:href= "@{/test(username='zhangsan')}" >进行测试
RequestMapping注解的headers属性(了解)
-
@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射 -
@RequestMapping注解的headers属性是一个字符串类型的数组, 可以通过四种表达式设置请求头信息和请求映射的匹配关系
-
"header":要求请求映射所匹配的请求必须携带header请求头信息
-
"!header":要求请求映射所匹配的请求必须不能携带header请求头信息
-
"header=value":要求请求映射所匹配的请求必须携带header请求头信息且header=value
-
"header!=value":要求请求映射所匹配的请求必须携带header请求头信息且header!=value
若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时页面显示404错 误,即资源未找到
headers属性可以通过浏览器控制台中查看
使用方法与上面的params属性类型,例如:
@RequestMapping(
value = "/test",
params = {"name" },
headers = {"Host=localhost:8080"}
SpringMVC支持ant风格的路径
- ? :表示任意的单个字符,例如:
/@RequestMapping( "/a?a/test"),
当我们使用`/a1a/test`时,可以匹配ant风格
- *:表示任意的0个或多个字符,例如
/@RequestMapping( "/a*a/test"),
当我们使用`/a10000a/test`或`/aa/test`时,可以匹配ant风格
**:表示任意的一层或多层目录
/@RequestMapping( "/a?a/test"),
当我们使用`/**/test`时,可以匹配ant风格
注意:在使用**时,只能使用/**/xxx的方式
8、SpringMVC支持路径中的占位符(重点)
- 原始方式: /addUser?name=zhangsan
- rest方式: /addUser/zhangsan
SpringMVC路径中的占位符常用于restful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就 可以在相应的@RequestMapping注解的value属性中通过占位符{xx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参
例如:我们需要获取到name参数,来执行我们的方法,我们就可以使用路径占位符的方式:
@RequestMapping(" /addUser/{name}/")
public String addUser (@PathVariable("name") String name){
System. out. print1n("name: "+name);
return "success";
}
//最终输出的内容为-->name:admin