@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錯誤