JavaEE SpringMVC 請(qǐng)求傳參的示例詳解
一、請(qǐng)求
訪問不同的路徑, 就是發(fā)送不同的請(qǐng)求. 在發(fā)送請(qǐng)求時(shí), 可能會(huì)帶?些參數(shù), 所以學(xué)習(xí)Spring的請(qǐng)求,主要是學(xué)習(xí)如何傳遞參數(shù)到后端以及后端如何接收.
傳遞參數(shù), 咱們主要是使?瀏覽器和Postman來(lái)模擬.
二、傳遞單個(gè)參數(shù)
接收單個(gè)參數(shù), 在 Spring MVC 中直接??法中的參數(shù)就可以
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m1")
public String m1(String request) {
return request;
}
}使用瀏覽器訪問:http://127.0.0.1:8080/user/m1?request=hello
使用Postman:

這兩種都是鍵值對(duì)模型,其中的鍵要與方法的參數(shù)名一樣。
注意事項(xiàng):
使?基本類型來(lái)接收參數(shù)時(shí), 參數(shù)必須傳(除boolean類型), 否則會(huì)報(bào)500錯(cuò)誤, 類型不匹配時(shí), 會(huì)報(bào)400錯(cuò)誤.


三、傳遞多個(gè)參數(shù)
和接收單個(gè)參數(shù)?樣, 直接使??法的參數(shù)接收即可. 使?多個(gè)形參.
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m3")
public String m3(String s1, int a) {
return s1+"參數(shù):"+a;
}
}使用瀏覽器訪問:http://127.0.0.1:8080/user/m3?s1=你好&a=100
使用Postman:

注意事項(xiàng):
- 這兩種都是鍵值對(duì)模型,其中的鍵要與方法的參數(shù)名一樣。
- 參數(shù)的位置是不影響后端獲取參數(shù)的結(jié)果.
- 基本類型來(lái)接收參數(shù)時(shí),一樣有上述問題。
四、傳遞對(duì)象
如果參數(shù)?較多時(shí), ?法聲明就需要有很多形參. 并且后續(xù)每次新增?個(gè)參數(shù), 也需要修改?法聲明. 我們不妨把這些參數(shù)封裝為?個(gè)對(duì)象.
實(shí)例:
public class Person {
private int id;
private String name;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
'}';
}
}
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m4")
public String m4(Person person){
return person.toString();
}
} 
注意事項(xiàng):
- 要傳類中的成員名,不包含類對(duì)象名。
- 由于類定義會(huì)給成員默認(rèn)值,這里沒有基本類型不傳值報(bào)錯(cuò)問題。
五、@RequestParam注解
后端參數(shù)重命名(后端參數(shù)映射)
某些特殊的情況下,前端傳遞的參數(shù) key 和我們后端接收的 key 可以不?致。
使用@RequestParam注解
實(shí)例:
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m5")
public String m5(@RequestParam(value = "s")String string) {
return string;
}
}
注意事項(xiàng):
- 使?
@RequestParam進(jìn)?參數(shù)重命名時(shí), 請(qǐng)求參數(shù)只能和@RequestParam聲明的名稱?
致, 才能進(jìn)?參數(shù)綁定和賦值. - 使?
@RequestParam進(jìn)?參數(shù)重命名時(shí), 參數(shù)就變成了必傳參數(shù). - 要將參數(shù)變成非必傳參數(shù),需要將required = false
六、傳遞數(shù)組
Spring MVC 可以?動(dòng)綁定數(shù)組參數(shù)的賦值
實(shí)例:
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m6")
public String m6(String[] strings) {
return Arrays.toString(strings);
}
}
注意事項(xiàng):
- 使用Postman傳參的時(shí)候,每個(gè)數(shù)組值通過(guò)逗號(hào)隔開。
- 當(dāng)需要傳逗號(hào)作為值的時(shí)候,就需要傳解碼encode后的值。
- 在使用瀏覽器URL訪問時(shí),也需要將非英文字母,全部encode。
七、傳遞集合,@RequestParam
集合參數(shù):和數(shù)組類似, 同?個(gè)請(qǐng)求參數(shù)名有為多個(gè), 且需要使? @RequestParam 綁定參數(shù)關(guān)系
實(shí)例:
@RestController
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "/m7")
public String m7(@RequestParam ArrayList<String> strings) {
return strings.toString();
}
}
注意事項(xiàng):
- 與傳遞數(shù)組同
八、傳遞JSON數(shù)據(jù)
JSON就是?種數(shù)據(jù)格式, 有??的格式和語(yǔ)法, 使??本表??個(gè)對(duì)象或數(shù)組的信息, 因此JSON本質(zhì)是字符串. 主要負(fù)責(zé)在不同的語(yǔ)?中數(shù)據(jù)傳遞和交換.
JOSN語(yǔ)法:
- 數(shù)據(jù)在 鍵值對(duì)(Key-Value) 中
- 數(shù)據(jù)由逗號(hào), 分隔
- 對(duì)象? { } 表?
- 數(shù)組? [ ] 表?
- 值可以為對(duì)象, 也可以為數(shù)組, 數(shù)組中可以包含多個(gè)對(duì)象
- 鍵key和值value之間通過(guò)冒號(hào)分割
- 鍵值對(duì)之間使用逗號(hào)分割

JSON優(yōu)點(diǎn)
- 簡(jiǎn)單易?: 語(yǔ)法簡(jiǎn)單,易于理解和編寫,可以快速地進(jìn)?數(shù)據(jù)交換
- 跨平臺(tái)?持: JSON可以被多種編程語(yǔ)?解析和?成, 可以在不同的平臺(tái)和語(yǔ)?之間進(jìn)?數(shù)據(jù)交換和
- 傳輸輕量級(jí): 相較于XML格式, JSON數(shù)據(jù)格式更加輕量級(jí), 傳輸數(shù)據(jù)時(shí)占?帶寬較?, 可以提?數(shù)據(jù)傳輸
- 速度易于擴(kuò)展: JSON的數(shù)據(jù)結(jié)構(gòu)靈活,?持嵌套對(duì)象和數(shù)組等復(fù)雜的數(shù)據(jù)結(jié)構(gòu),便于擴(kuò)展和使?
- 安全性: JSON數(shù)據(jù)格式是?種純?本格式,不包含可執(zhí)?代碼, 不會(huì)執(zhí)?惡意代碼,因此具有較?的安全性
8.1 JSON字符串和Java對(duì)象互轉(zhuǎn)
我們?cè)谶@介紹使用Jackson方式轉(zhuǎn)換,因?yàn)檫@個(gè)是Spring中集成了的,不用引入依賴。
還有fastjson,gson。
8.1.1 @Test注解
在我們寫測(cè)試代碼時(shí)我們?cè)趖est這個(gè)包下面寫。
我們可以直接寫main方法,也可以使用@Test這個(gè)方法注解在測(cè)試方法前面加上,這個(gè)注解作用相當(dāng)于為方法開一個(gè)線程。所以可以寫多個(gè)被@Test修飾的方法同時(shí)運(yùn)行。
8.1.2 Java對(duì)象轉(zhuǎn)JSON
使用類ObjectMapper下面的writeValueAsString方法。類對(duì)象必須要有無(wú)參構(gòu)造函數(shù)。
步驟:
- 創(chuàng)建ObjectMapper對(duì)象
- 創(chuàng)建對(duì)象
- 直接調(diào)用writeValueAsString 將對(duì)象轉(zhuǎn)換為JSON
@Test
void testObjectToJson() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
//創(chuàng)建對(duì)象
Person person = new Person();
person.setId(1);
person.setName("zhangsan");
person.setPassword("111");
//對(duì)象轉(zhuǎn)JSON
String j = objectMapper.writeValueAsString(person);
System.out.println(j);
}8.1.3 JSON轉(zhuǎn)Java對(duì)象
使用類ObjectMapper下面的readValue方法。
- 創(chuàng)建ObjectMapper對(duì)象
- 創(chuàng)建json
- 直接調(diào)用readValue將json轉(zhuǎn)換為對(duì)象
@Test
void testJsonToObject() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
//創(chuàng)建json
String s = "{\"id\":1,\"name\":\"zhangsan\",\"password\":\"111\"}";
//JSON轉(zhuǎn)對(duì)象
Person person = objectMapper.readValue(s,Person.class);
System.out.println(person);
}8.2 傳遞JSON
8.3 后端實(shí)現(xiàn)
我們只需要在方法參數(shù)上加上@RequestBody這個(gè)注解。
RequestBody: 請(qǐng)求正?,意思是這個(gè)注解作?在請(qǐng)求正?的數(shù)據(jù)綁定,請(qǐng)求參數(shù)必須在寫在請(qǐng)求正?中
@RequestMapping(value ="/j1")
public String j1(@RequestBody Person person) {
return person.toString();
}postman傳參

到此這篇關(guān)于 JavaEE SpringMVC 請(qǐng)求傳參的文章就介紹到這了,更多相關(guān) JavaEE SpringMVC 請(qǐng)求傳參內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot中整合knife4j接口文檔的過(guò)程詳解
knife4j就swagger的升級(jí)版API文檔的一個(gè)框架,但是用起來(lái)比swagger方便多了,UI更加豐富,這篇文章主要介紹了Springboot中整合knife4j接口文檔,需要的朋友可以參考下2022-04-04
mybatis配置對(duì)象包含對(duì)象以及List的方式
這篇文章主要介紹了mybatis配置對(duì)象包含對(duì)象以及List的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
圖解Java經(jīng)典算法冒泡排序的原理與實(shí)現(xiàn)
冒泡排序是一種簡(jiǎn)單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對(duì)相鄰的元素,當(dāng)該對(duì)元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過(guò)程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序2022-09-09
SpringBoot中4種接口冪等性的實(shí)現(xiàn)策略
冪等性是指對(duì)同一操作執(zhí)行多次與執(zhí)行一次的效果相同,不會(huì)因?yàn)橹貜?fù)執(zhí)行而產(chǎn)生副作用,本文整理了4個(gè)SpringBoot實(shí)現(xiàn)接口冪等性的方法,大家可以根據(jù)需要進(jìn)行選擇2025-04-04
Java實(shí)現(xiàn)插入排序算法可視化的示例代碼
插入排序的算法描述是一種簡(jiǎn)單直觀的排序算法。其原理是通過(guò)構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。本文將用Java語(yǔ)言實(shí)現(xiàn)插入排序算法并進(jìn)行可視化,感興趣的可以了解一下2022-08-08
Java中的clone方法詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
clone顧名思義就是復(fù)制, 在Java語(yǔ)言中, clone方法被對(duì)象調(diào)用,所以會(huì)復(fù)制對(duì)象。下面通過(guò)本文給大家介紹java中的clone方法,感興趣的朋友一起看看吧2017-06-06
SpringSecurity實(shí)現(xiàn)自定義登錄方式
本文介紹自定義登錄流程,包括自定義AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置類,詳細(xì)解析了認(rèn)證流程的實(shí)現(xiàn),為開發(fā)人員提供了具體的實(shí)施指導(dǎo)和參考2024-09-09
springboot應(yīng)用中使用過(guò)濾器的過(guò)程詳解
過(guò)濾器通常用于實(shí)現(xiàn)跨切面的功能,例如身份驗(yàn)證、日志記錄、請(qǐng)求和響應(yīng)的修改、性能監(jiān)控等,這篇文章主要介紹了springboot應(yīng)用中使用過(guò)濾器,需要的朋友可以參考下2023-06-06
Java實(shí)現(xiàn)手寫線程池實(shí)例并測(cè)試詳解
這篇文章主要來(lái)模擬一下線程池和工作隊(duì)列的流程,以及編寫代碼和測(cè)試類進(jìn)行測(cè)試。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02

