javascript
SpringBoot-@RequestParam
Request參數
在訪問各種各樣網站時,經常會發現網站的URL的最后一部分形如:?xxxx=yyyy&zzzz=wwww。這就是HTTP協議中的Request參數,它有什么用呢?先來看一個例子:
- 在知乎中搜索web
- 瀏覽器跳轉到新頁面后,URL變為https://www.zhihu.com/search?type=content&q=web
這里type=content&q=web就是搜索請求的參數,不同參數之間用&分隔,每個參數形如name=value形式,分別表示參數名字和參數值。在這個例子中,我們輸入不同的搜索關鍵詞,在搜索結果頁面的URL的q參數是不同的,也就是說,HTTP參數實際上可以認為是一種用戶的輸入,根據不同的用戶輸入,服務器經過處理后返回不同的輸出(例如搜索spring和搜索java,顯示結果是不一樣的。)
Spring MVC中的Request參數
在SpringMVC框架中,現在我們已經可以通過定義@RequestMapping來處理URL請求了,和@PathVariable一樣,我們也需要再處理URL的函數中獲取URL中的參數-也就是?key=value1&key2=value2這樣的參數列表。通過注解@RequestParam可以輕松的將URL中的參數綁定到處理函數方法的變量中:
@RequestMapping("/user")@ResponseBody // public String getUerBlog(@PathVariable String username , @PathVariable int blogId) { // return "user: " + username + "blog->" + blogId; // }public String getUserBlog(@RequestParam("id") int blogId) {return "blogId = " + blogId;}這樣當我們訪問/user/?id=123時,Spring MVC幫助我們將Request參數id的值綁定到了處理函數的參數blogId上。這樣就能夠輕松獲取用戶輸入,并根據它的值進行計算并返回了。
運行結果:
@RequestParam vs @PathVariable
相信大家可能注意到了,@RequestParam和@PathVariable都能夠完成類似的功能——因為本質上,它們都是用戶的輸入,只不過輸入的部分不同,一個在URL路徑部分,另一個在參數部分。要訪問一篇博客文章,這兩種URL設計都是可以的:
- 通過@PathVariable,例如/blogs/1
- 通過@RequestParam,例如blogs?blogId=1
那么究竟應該選擇哪一種呢?建議:
例如我們會這樣設計URL:
- /blogs/{blogId}
- /blogs?state=publish而不是/blogs/state/publish來表示處于發布狀態的博客文章
更多用法
一旦我們在方法中定義了@RequestParam變量,如果訪問的URL中不帶有相應的參數,就會拋出異常——這是顯然的,Spring嘗試幫我們進行綁定,然而沒有成功。但有的時候,參數確實不一定永遠都存在,這是我們可以通過定義required屬性:
@RequestParam(name="id",required=false)當然,在參數不存在的情況下,可能希望變量有一個默認值:
@RequestParam(name="id",required=false,defaultValue="0")來源:https://www.cnblogs.com/fangpengchengbupter/p/7826565.html
總結
以上是生活随笔為你收集整理的SpringBoot-@RequestParam的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牡丹江电瓶车上牌的地方在哪?
- 下一篇: windows系统如何查看端口被占用、杀