SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細(xì)講解
前面我們說(shuō)過(guò),現(xiàn)在比較流行的開(kāi)發(fā)方式為異步調(diào)用。前后臺(tái)以異步方式進(jìn)行交換,傳輸?shù)臄?shù)據(jù)使用的是==JSON==,所以前端如果發(fā)送的是JSON數(shù)據(jù),后端該如何接收?
對(duì)于JSON數(shù)據(jù)類型,我們常見(jiàn)的有三種:
- json普通數(shù)組(["value1","value2","value3",...])
- json對(duì)象({key1:value1,key2:value2,...})
- json對(duì)象數(shù)組([{key1:value1,...},{key2:value2,...}])
對(duì)于上述數(shù)據(jù),前端如何發(fā)送,后端如何接收?
一、JSON普通數(shù)組
步驟1:pom.xml添加依賴
SpringMVC默認(rèn)使用的是jackson來(lái)處理json的轉(zhuǎn)換,所以需要在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:開(kāi)啟SpringMVC注解支持
在SpringMVC的配置類中開(kāi)啟SpringMVC的注解支持,這里面就包含了將JSON轉(zhuǎn)換成對(duì)象的功能。
@Configuration
@ComponentScan("com.itheima.controller")
//開(kāi)啟json數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換
@EnableWebMvc
public class SpringMvcConfig {
}步驟4:參數(shù)前添加@RequestBody
//使用@RequestBody注解將外部傳遞的json數(shù)組數(shù)據(jù)映射到形參的集合對(duì)象中作為數(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:啟動(dòng)運(yùn)行程序

JSON普通數(shù)組的數(shù)據(jù)就已經(jīng)傳遞完成,下面針對(duì)JSON對(duì)象數(shù)據(jù)和JSON對(duì)象數(shù)組的數(shù)據(jù)該如何傳遞呢?
二、JSON對(duì)象數(shù)據(jù)
我們會(huì)發(fā)現(xiàn),只需要關(guān)注請(qǐng)求和數(shù)據(jù)如何發(fā)送?后端數(shù)據(jù)如何接收?
請(qǐng)求和數(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'}";
}啟動(dòng)程序訪問(wèn)測(cè)試

說(shuō)明:
address為null的原因是前端沒(méi)有傳遞數(shù)據(jù)給后端。
如果想要address也有數(shù)據(jù),我們需求修改前端傳遞的數(shù)據(jù)內(nèi)容:
{
"name":"itcast",
"age":15,
"address":{
"province":"beijing",
"city":"beijing"
}
}再次發(fā)送請(qǐng)求,就能看到address中的數(shù)據(jù)

三、JSON對(duì)象數(shù)組
如何集合中保存多個(gè)POJO該如何實(shí)現(xiàn)?
請(qǐng)求和數(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'}";
}啟動(dòng)程序訪問(wèn)測(cè)試

小結(jié)
SpringMVC接收J(rèn)SON數(shù)據(jù)的實(shí)現(xiàn)步驟為:
(1)導(dǎo)入jackson包
(2)使用PostMan發(fā)送JSON數(shù)據(jù)
(3)開(kāi)啟SpringMVC注解驅(qū)動(dòng),在配置類上添加@EnableWebMvc注解
(4)Controller方法的參數(shù)前添加@RequestBody注解
知識(shí)點(diǎn)1:@EnableWebMvc
| 名稱 | @EnableWebMvc |
|---|---|
| 類型 | ==配置類注解== |
| 位置 | SpringMVC配置類定義上方 |
| 作用 | 開(kāi)啟SpringMVC多項(xiàng)輔助功能 |
知識(shí)點(diǎn)2:@RequestBody
| 名稱 | @RequestBody |
|---|---|
| 類型 | ==形參注解== |
| 位置 | SpringMVC控制器方法形參定義前面 |
| 作用 | 將請(qǐng)求中請(qǐng)求體所包含的數(shù)據(jù)傳遞給請(qǐng)求參數(shù),此注解一個(gè)處理器方法只能使用一次 |
@RequestBody與@RequestParam區(qū)別
區(qū)別
- @RequestParam用于接收url地址傳參,表單傳參【application/x-www-form-urlencoded】
- @RequestBody用于接收json數(shù)據(jù)【application/json】
應(yīng)用
- 后期開(kāi)發(fā)中,發(fā)送json格式數(shù)據(jù)為主,@RequestBody應(yīng)用較廣
- 如果發(fā)送非json格式數(shù)據(jù),選用@RequestParam接收請(qǐng)求參數(shù)
到此這篇關(guān)于SpringMVC JSON數(shù)據(jù)傳輸參數(shù)超詳細(xì)講解的文章就介紹到這了,更多相關(guān)SpringMVC JSON數(shù)據(jù)傳輸參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java如何發(fā)送get請(qǐng)求獲取數(shù)據(jù)(附代碼)
這篇文章主要給大家介紹了關(guān)于java如何發(fā)送get請(qǐng)求獲取數(shù)據(jù)的相關(guān)資料,Java中的GET請(qǐng)求方法是HTTP協(xié)議中的一種請(qǐng)求方式,用于向服務(wù)器請(qǐng)求獲取資源,需要的朋友可以參考下2023-10-10
解決mybatis中order by排序無(wú)效問(wèn)題
這篇文章主要介紹了解決mybatis中order by排序無(wú)效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
SWT(JFace)體驗(yàn)之圖片的動(dòng)態(tài)漸變效果
SWT(JFace)體驗(yàn)之圖片的動(dòng)態(tài)漸變效果2009-06-06
如何使用Spring Security實(shí)現(xiàn)用戶-角色-資源的權(quán)限控制
文章介紹了如何通過(guò)SpringSecurity實(shí)現(xiàn)用戶-角色-資源的權(quán)限管理,包括基于角色的請(qǐng)求控制、加載用戶角色信息、角色與資源的關(guān)聯(lián)等步驟,同時(shí),提供了一些測(cè)試場(chǎng)景,以驗(yàn)證權(quán)限控制是否正確,感興趣的朋友跟隨小編一起看看吧2024-10-10
SpringBoot實(shí)現(xiàn)獲取客戶端IP地理位置
在當(dāng)今互聯(lián)的世界中,了解客戶端的地理位置對(duì)于提供個(gè)性化服務(wù)和增強(qiáng)用戶體驗(yàn)至關(guān)重要,使用本文為大家介紹了SpringBoot獲取客戶端IP地理位置的相關(guān)方法,需要的小伙伴可以參考下2023-11-11
SpringMVC HttpMessageConverter消息轉(zhuǎn)換器
??HttpMessageConverter???,報(bào)文信息轉(zhuǎn)換器,將請(qǐng)求報(bào)文轉(zhuǎn)換為Java對(duì)象,或?qū)ava對(duì)象轉(zhuǎn)換為響應(yīng)報(bào)文。???HttpMessageConverter???提供了兩個(gè)注解和兩個(gè)類型:??@RequestBody,@ResponseBody???,??RequestEntity,ResponseEntity??2023-04-04

