轉載來源 https://blog.csdn.net/u011410529/article/details/66974974 有改動。
@RequestParam 和 @PathVariable 註解是用於從request中接收請求的,兩個都可以接收參數,關鍵點不同的是@RequestParam 是從request裏面拿取值,而 @PathVariable 是從一個URI模板裏面來填充(基於restful風格)
@RequestParam
看下面一段代碼:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
根據上面的這個URL,你可以用這樣的方式來進行獲取
public String getDetails(
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
...
}
@RequestParam 支持下面四種參數
- defaultValue 如果本次請求沒有攜帶這個參數,或者參數爲空,那麼就會啓用默認值
- name 綁定本次參數的名稱,要跟URL上面的一樣
- required 這個參數是不是必須的
- value 跟name一樣的作用,是name屬性的一個別名
@PathVariable
這個註解能夠識別URL裏面的一個模板,我們看下面的一個URL
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20
上面的一個url你可以這樣寫:
@RequestMapping("/hello/{id}")
public String getDetails(@PathVariable(value="id") String id,
@RequestParam(value="param1", required=true) String param1,
@RequestParam(value="param2", required=false) String param2){
.......
}
看完例子能感受到兩者明顯的差別了,在使用RestFul風格的時候使用@PathVariable,
直接通過鍵值對的方式使用@RequestParam即可。