測試開發進階——spring boot——MVC——get訪問——通過URL傳遞引數
阿新 • • 發佈:2021-07-31
通過URL傳遞引數與上面的URL不同,上面的URL中均需寫明引數名和對應引數值,這裡的URL傳遞引數,僅需要在位址列輸入引數值,然後後臺自動匹配到對應的引數名。
springMVC通過使用處理器對映和@PathVariable註解的組合來獲取URL引數。
首先通過處理器對映可以定位引數的位置和名稱,而@PathVariable則可以通過名稱來獲取引數。
package com.awaimai.web; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @RestController public class kzq { @RequestMapping("/param/geturl/{name}/{age}/{score}") @ResponseBody public Map<String, Object> getUrlParam( @PathVariable("name") String name, @PathVariable("age") Integer age, @PathVariable("score") Double score) { Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("name", name); paramMap.put("age", age); paramMap.put("score", score); return paramMap; } }
方法中,我們使用了3個{ },分別代表變數name、age和score,方法變數中使用@PathVariable來接收變數,並對映為方法的變數
=====================================================================================================
如果中間某個引數可能為空呢,查了下@PathVariable註解有required屬性,但是經測試,發現這個屬性無法單獨使用。
如果中間某個引數為空,還得借用@RequestMapping 支援多URL的屬性進行處理
假如,age屬性可能為空,那麼修改程式碼為
package com.awaimai.web; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @RestController public class kzq { @RequestMapping(value = {"/param/geturl/{name}/{age}/{score}", "/param/geturl/{name}/{score}"}) @ResponseBody public Map<String, Object> getUrlParam( @PathVariable("name") String name, @PathVariable(value = "age", required = false) Integer age, @PathVariable("score") Double score) { Map<String, Object> paramMap = new HashMap<String, Object>(); paramMap.put("name", name); paramMap.put("age", age); paramMap.put("score", score); return paramMap; } }
其中,後面的URL中沒有了age引數,這裡,視有無age的請求為不同的請求
使用URLhttp://localhost:8080/param/geturl/zhangsan//89做測試,可以正常跳轉
web訪問: