SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細講解
前面我們說過,現(xiàn)在比較流行的開發(fā)方式為異步調用。前后臺以異步方式進行交換,傳輸?shù)臄?shù)據(jù)使用的是==JSON==,所以前端如果發(fā)送的是JSON數(shù)據(jù),后端該如何接收?
對于JSON數(shù)據(jù)類型,我們常見的有三種:
- json普通數(shù)組(["value1","value2","value3",...])
- json對象({key1:value1,key2:value2,...})
- json對象數(shù)組([{key1:value1,...},{key2:value2,...}])
對于上述數(shù)據(jù),前端如何發(fā)送,后端如何接收?
一、JSON普通數(shù)組
步驟1:pom.xml添加依賴
SpringMVC默認使用的是jackson來處理json的轉換,所以需要在pom.xml添加jackson依賴
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version></dependency>
步驟2:PostMan發(fā)送JSON數(shù)據(jù)
步驟3:開啟SpringMVC注解支持
在SpringMVC的配置類中開啟SpringMVC的注解支持,這里面就包含了將JSON轉換成對象的功能。
@Configuration @ComponentScan("com.itheima.controller") //開啟json數(shù)據(jù)類型自動轉換 @EnableWebMvc public class SpringMvcConfig { }
步驟4:參數(shù)前添加@RequestBody
//使用@RequestBody注解將外部傳遞的json數(shù)組數(shù)據(jù)映射到形參的集合對象中作為數(shù)據(jù) @RequestMapping("/listParamForJson") @ResponseBody public String listParamForJson(@RequestBody List<String> likes){ System.out.println("list common(json)參數(shù)傳遞 list ==> "+likes); return "{'module':'list common for json param'}"; }
步驟5:啟動運行程序
JSON普通數(shù)組的數(shù)據(jù)就已經(jīng)傳遞完成,下面針對JSON對象數(shù)據(jù)和JSON對象數(shù)組的數(shù)據(jù)該如何傳遞呢?
二、JSON對象數(shù)據(jù)
我們會發(fā)現(xiàn),只需要關注請求和數(shù)據(jù)如何發(fā)送?后端數(shù)據(jù)如何接收?
請求和數(shù)據(jù)的發(fā)送:
{ "name":"itcast", "age":15 }
后端接收數(shù)據(jù):
@RequestMapping("/pojoParamForJson") @ResponseBody public String pojoParamForJson(@RequestBody User user){ System.out.println("pojo(json)參數(shù)傳遞 user ==> "+user); return "{'module':'pojo for json param'}"; }
啟動程序訪問測試
說明:
address為null的原因是前端沒有傳遞數(shù)據(jù)給后端。
如果想要address也有數(shù)據(jù),我們需求修改前端傳遞的數(shù)據(jù)內容:
{ "name":"itcast", "age":15, "address":{ "province":"beijing", "city":"beijing" } }
再次發(fā)送請求,就能看到address中的數(shù)據(jù)
三、JSON對象數(shù)組
如何集合中保存多個POJO該如何實現(xiàn)?
請求和數(shù)據(jù)的發(fā)送:
[ {"name":"itcast","age":15}, {"name":"itheima","age":12} ]
后端接收數(shù)據(jù):
@RequestMapping("/listPojoParamForJson") @ResponseBody public String listPojoParamForJson(@RequestBody List<User> list){ System.out.println("list pojo(json)參數(shù)傳遞 list ==> "+list); return "{'module':'list pojo for json param'}"; }
啟動程序訪問測試
小結
SpringMVC接收JSON數(shù)據(jù)的實現(xiàn)步驟為:
(1)導入jackson包
(2)使用PostMan發(fā)送JSON數(shù)據(jù)
(3)開啟SpringMVC注解驅動,在配置類上添加@EnableWebMvc注解
(4)Controller方法的參數(shù)前添加@RequestBody注解
知識點1:@EnableWebMvc
名稱 | @EnableWebMvc |
---|---|
類型 | ==配置類注解== |
位置 | SpringMVC配置類定義上方 |
作用 | 開啟SpringMVC多項輔助功能 |
知識點2:@RequestBody
名稱 | @RequestBody |
---|---|
類型 | ==形參注解== |
位置 | SpringMVC控制器方法形參定義前面 |
作用 | 將請求中請求體所包含的數(shù)據(jù)傳遞給請求參數(shù),此注解一個處理器方法只能使用一次 |
@RequestBody與@RequestParam區(qū)別
區(qū)別
- @RequestParam用于接收url地址傳參,表單傳參【application/x-www-form-urlencoded】
- @RequestBody用于接收json數(shù)據(jù)【application/json】
應用
- 后期開發(fā)中,發(fā)送json格式數(shù)據(jù)為主,@RequestBody應用較廣
- 如果發(fā)送非json格式數(shù)據(jù),選用@RequestParam接收請求參數(shù)
到此這篇關于SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細講解的文章就介紹到這了,更多相關SpringMVC JSON數(shù)據(jù)傳輸參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Cloud Gateway 服務網(wǎng)關快速實現(xiàn)解析
這篇文章主要介紹了Spring Cloud Gateway 服務網(wǎng)關快速實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況
這篇文章主要介紹了MyBatis使用注解開發(fā)和無主配置文件開發(fā)的情況,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Spring?Boot將@RestController誤用于視圖跳轉問題解決
這篇文章主要為大家介紹了Spring?Boot將@RestController誤用于視圖跳轉問題解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06