簡單捋捋@RequestParam 和 @RequestBody的使用
前端向后端傳遞參數(shù),后端怎么去接收,就會想到 spring 的注解
之前的話,我一直用的是 RequestParam("userName") String userName 這種形式,講道理不怎么用 RequestParam String userName
無意間該去看看這兩個是有什么不同了.
- @RequestParam
- @RequestBody (以 json 數(shù)據(jù)的形式接收)
如果不寫 @RequestParam(xxx) 注解的話,那么就前端可以有 可以沒有對應的xxx名字都行
如果有xxx名,那么就會自動匹配;
如果沒有,請求也能正確發(fā)送。
一、 @RequestParam
/** * 用戶登錄 * @param userName * @param password * @return */ @RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestParam String userName, @RequestParam String password){ public BaseResponse login(@RequestParam("user") String userName, @RequestParam("psd") String password){
如果前端不傳 userName 或者 password 參數(shù)名的參數(shù)就會報錯
1. 用 @RequestParam 前端傳過來的參數(shù)名默認為 userName 我們String后面起的參數(shù)名
如果前端不傳 user 或者 psd 參數(shù)名的參數(shù)就會報錯
2. 用 @RequestParam("user") @RequestParam("psd"), 給前端傳遞過來的參數(shù)指定參數(shù)名
錯誤信息
3. "message":"Required String parameter 'userName' is not present"
其實還有其他的形式
看下面
@RequestParam(value="user" required=false) 這個注解
可以通過 required = false 或者 true 來要求 @RequestParam配置的前端參數(shù)是否一定要傳
required = false 表示不傳的話,會給參數(shù)賦值為 null ,required = true 就是必須要有
注意:
如果@requestParam注解的參數(shù)是int類型,并且required=false,此時如果不傳參數(shù)的話,會報錯。原因是,required=false時,不傳參數(shù)的話,會給參數(shù)賦值null,這樣就會把null賦值給了int,因此會報錯。
使用 Integer 包裝類型的話還要需要注意空指針異常
二、@RequestBody
@RequestBody 以 字符串 的形式接收前端傳過來的請求體中的 json 數(shù)據(jù)
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody String jsonStr){
@RequestBody 以 簡單對象 接收前端傳過來的 json 數(shù)據(jù)
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody User user){
@RequestBody以 復雜對象 接收前端傳過來的 json 數(shù)據(jù)
@RequestMapping(value = "login", method = RequestMethod.POST) public String login(@RequestBody Team team){
參考: 筆者JustryDeng
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Spring使用AOP完成統(tǒng)一結果封裝實例demo
這篇文章主要介紹了Spring使用AOP完成統(tǒng)一結果封裝,本文通過實現(xiàn)demo給大家詳細講解,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02SpringBoot在一定時間內限制接口請求次數(shù)的實現(xiàn)示例
在項目中,接口的暴露在外面,很多人就會惡意多次快速請求,本文主要介紹了SpringBoot在一定時間內限制接口請求次數(shù)的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2022-03-03idea 創(chuàng)建 maven web 工程流程(圖文教程)
這篇文章主要介紹了idea 創(chuàng)建 maven web 工程流程(圖文教程),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05Java基于Calendar類輸出指定年份和月份的日歷代碼實例
這篇文章主要介紹了Java 使用Calendar類輸出指定年份和月份的日歷,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02詳解MyBatis如何在大數(shù)據(jù)量下使用流式查詢進行數(shù)據(jù)同步
通常的數(shù)據(jù)同步中,如果數(shù)據(jù)量比較少的話可以直接全量同步,但是如果數(shù)據(jù)量很大的話,全量同步需要大量的內存,所以本文為大家介紹了MyBatis使用流式查詢實現(xiàn)數(shù)據(jù)同步的方法,希望對大家有所幫助2023-05-05