@RequestMapping注解的params属性
知识点四、
@RequestMapping注解的params属性:
@RequestMapping注解的params属性通过请求的请求参数匹配请求映射
@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系
"param”:要求请求映射所匹配的请求必须携带param请求参数,例如username
"!param”:要求请求映射所匹配的请求必须不能携带param请求参数,例如!username
"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value,例如username=admin
"param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value,例如password!=123456
练习测试一下:
1. //测试必须携带username请求参数
@RequestMapping(value = "/testParamsAndHeaders", params = {"username") public String testParamsAndHeaders(){ return "success"; }
如果不携带username浏览器会报400错误:Parameter conditions "username" not met for actual request parameters:
这句话的意思是:实际的请求参数不满足参数请求条件"username",即没有该参数
当携带username之后,访问即成功
<a th:href="@{/hello/testParamsAndHeaders?username='张三'}" >测试RequestMapping注解的Params属性</a>
此处需要注意,在idea2021版本以下,在Thymeleaf中问号传参的问号会标红(2021版本不标红),
标准写法:使用小括号来传参
1 <a th:href="@{/hello/testParamsAndHeaders(username='张三')}" >测试RequestMapping注解的Params属性</a>
2.同理测试不能携带username参数:
1 @RequestMapping(value = "/testParamsAndHeaders", 2 params = {"!username") 3 public String testParamsAndHeaders(){ 4 return "success"; 5 }
<a th:href="@{/hello/testParamsAndHeaders?username='张三'}" >测试RequestMapping注解的Params属性</a>
如果携带username参数浏览器会报与上面一样的400错误:
Parameter conditions "username" not met for actual request parameters:
3.接下来一起测试一下后两种吧!
1 @RequestMapping(value = "/testParamsAndHeaders", 2 params = {"username=admin","password!=123456"}) 3 public String testParamsAndHeaders(){ 4 return "success"; 5 }
这个用来测试同时携带username和password请求参数,并且username的值必须为admin
password的值不能是123456,必须同时满足条件才能访问成功。如果不成功,同样会报400错误