javascript
SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别
SpringMVC注解@RequestParam全面解析
在此之前,寫項(xiàng)目一直用的是@RequestParam(value=“aa” required=false)這個(gè)注解,但是并不知道它的意思。現(xiàn)在懂了,特來記錄下。
1、可以對(duì)傳入?yún)?shù)指定參數(shù)名
1 @RequestParam String inputStr 2 // 下面的對(duì)傳入?yún)?shù)指定為aa,如果前端不傳aa參數(shù)名,會(huì)報(bào)錯(cuò) 3 @RequestParam(value="aa") String inputStr2、可以通過required=false或者true來要求@RequestParam配置的前端參數(shù)是否一定要傳
1 // required=false表示不傳的話,會(huì)給參數(shù)賦值為null,required=true就是必須要有 2 @RequestMapping("testRequestParam") 3 public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request)3、如果@requestParam注解的參數(shù)是int類型,并且required=false,此時(shí)如果不傳參數(shù)的話,會(huì)報(bào)錯(cuò)。原因是,required=false時(shí),不傳參數(shù)的話,會(huì)給參數(shù)賦值null,這樣就會(huì)把null賦值給了int,因此會(huì)報(bào)錯(cuò)。
1 // required=false表示不傳的話,會(huì)給參數(shù)賦值為null,required=true就是必須要有 2 @RequestMapping("testRequestParam") 3 public String filesUpload(@RequestParam(value="aa", required=false) int inputStr, HttpServletRequest request) 4 若是前端頁面不傳參的話,此處就會(huì)報(bào)錯(cuò)。當(dāng)然可以用Integer代替int注解@RequestParam如何使用加與不加的區(qū)別\
springmvc為我們提供了多個(gè)注解來處理入?yún)⒑头祷刂?#xff0c;@RequestParam就是用來處理入?yún)⒌?#xff0c;但可能你會(huì)奇怪,平時(shí)不使用這個(gè)參數(shù)也可以獲取到參數(shù)呀,確實(shí)加與不加都可以獲取參數(shù),但還是有區(qū)別的,下面就來看下如何使用和區(qū)分
方法/步驟
1
為演示效果,首先需要?jiǎng)?chuàng)建一個(gè)測(cè)試控制類,然后創(chuàng)建一個(gè)測(cè)試方法,如圖所示,方法里添加一個(gè)參數(shù),此時(shí)方法參數(shù)沒有添加注解
2
通過idea工具啟動(dòng)web項(xiàng)目,然后通過瀏覽器訪問測(cè)試效果,不帶參數(shù)則獲取的參數(shù)為null,但頁面可以正常顯示,請(qǐng)求可以正常的執(zhí)行,帶上參數(shù)之后,參數(shù)可以正常的獲取并打印出來了
3
下面來對(duì)比下添加注解的效果,但只是添加@RequestParam,沒有帶任何的注解設(shè)置參數(shù)。
4
再次通過瀏覽器訪問查看效果,此時(shí)帶上userName參數(shù)頁面可以正常顯示并打印出結(jié)果值,但如圖所示,不帶參數(shù)的時(shí)候,頁面報(bào)錯(cuò),返回400,并提示userName不存在
5
當(dāng)然這樣的限制是可以選擇的,@RequestParam里添加required=false來關(guān)閉必須參數(shù)的限制,這樣就和不帶第一種不帶注解的效果一樣了
6
@RequestParam還可以在參數(shù)為空的情況下,為我們?cè)O(shè)置一個(gè)參數(shù)的默認(rèn)值,如圖所示,可以看出來,沒有參數(shù)的情況下,獲取到的就是默認(rèn)值
7
默認(rèn)參數(shù)的key名稱是方法里的參數(shù)名稱,但通過@RequestParam可以自定義另外一個(gè),因?yàn)樵谀承l件下,方法名稱固定下來不可以修改了,但請(qǐng)求的參數(shù)又需要通過另外一個(gè)參數(shù)key名稱來傳遞,這樣就可以通過這樣的方式來實(shí)現(xiàn)
END
注意事項(xiàng)
- 雖然加與不加都可以獲取到參數(shù),但特定的需求或限制的時(shí)候,就需要結(jié)合@RequestParam注解來使用了。
總結(jié)
以上是生活随笔為你收集整理的SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 喜报!第四范式助推百胜中国斩获2020
- 下一篇: Spring框架中的单例Bean是线程安