Controller帶入參數的方式
RequestParam
@GetMapping("/param1")
public String param1(@RequestParam(value = "name", defaultValue = "Sung") String name){
return "param1: " + name;
}
@GetMapping("/param2")
public String param2(@RequestParam String name){
return "param2: " + name;
}
瀏覽器呼叫方式:
- localhost:8080/param1?name=jack,畫面顯示:param1: jack
- localhost:8080/param1,畫面顯示:param1: Sung
- localhost:8080/param2,畫面顯示:報錯
其中value是參數名稱,defaultValue是預設值,如果沒使用預設值,忘記帶變數就會報錯
PathParam
與上述RequestParam很相似
PathVariable
與上述兩種不同,上述可以透過form發送請求,而此方式是透過URL獲得參數
@GetMapping("/param2")
public String param2(@RequestParam String name){
return "param2: " + name;
}
@GetMapping("/param3/{name}")
public String param3(@PathVariable String name){
return "param3: " + name;
}
瀏覽器呼叫方式:
- localhost:8080/param3/jack,畫面顯示:param3: jack
- localhost:8080/param2?name=jack,畫面顯示:param2: jack
- localhost:8080/param3/ab+c,畫面顯示:param3: ab+c
- localhost:8080/param2?name=ab+c,畫面顯示:param2: ab c
總結一下
RequestParam | PathParam | PathVariable |
---|---|---|
可透過URL?帶參數,也可透過form發送 | 可透過URL?帶參數,也可透過form發送 | 透過URL/的方式帶參數 |
user?name=xxx&age=yy | user?name=xxx&age=yy | user/{name}/{age} |
ab+c => ab c | ab+c => ab c | ab+c => ab+c |
可使用required、defauleValue | 可使用required、defauleValue | X |