Try   HackMD

常用註解 @PathVariable 與 @RequestParam

tags: Spring springframework Spring-web

先說一下Request瞭解一下請求參數是什麼

在訪問各種各樣網站時,經常會發現網站的URL的最後一部分會像是:?xxxx=yyyy&zzzz=wwww。這就是 HTTP 協議中的 Request 參數,它有什麼用呢?先來看一個例子:

在 google 搜尋 hackmd
瀏覽器的 URL 就會變成:
https://www.google.com/search?q=hackmd&oq=hackmd&aqs=chrome..69i57j0l3j69i60l4.7956j0j7&sourceid=chrome&ie=UTF-8

我們可以看到 ?q=hackmd,就是搜尋時請求的參數,不同參數之間用&分隔,且每個參數以name=value的方式表示,在這個例子中輸入不同關鍵字,在搜尋結果的頁面 URL 中 q 的參數就會不同。

Re

http://localhost:8080/springmvc/hello/101?param1=10&param2=20

@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){
.......
}

相信大家可能注意到了, @RequestParam 和 @PathVariable 都能夠完成類似的功能,因為本質上,它們都是使用者的輸入,只不過輸入的部分不同,一個在URL路徑部分,另一個在參數部分,簡單的說就是 URL 寫法不同,如下:

使用 @RequestParam 時,URL 是這樣的:http://host:port/path?參數名=參數值

使用 @PathVariable時,URL是這樣的:http://host:port/path/參數值