SpringMVC中Controller層獲取前端請(qǐng)求參數(shù)的方式匯總
1、SpringMVC自動(dòng)綁定
在controller層方法中定義形參,若請(qǐng)求時(shí)參數(shù)名、參數(shù)類(lèi)型相同,則SpringMVC會(huì)自動(dòng)綁定。
/**
* @description: 測(cè)試springmvc自動(dòng)綁定
* @author: Vinci
* @date: 2023/8/23 16:32
**/
@GetMapping("/automaticallyBindParameters")
public String automaticallyBindParameters(String message,String test){
return "message="+message + ",test="+test;
}下面使用PostMan進(jìn)行測(cè)試發(fā)現(xiàn),無(wú)論是將參數(shù)直接拼接到URL還是寫(xiě)在form-data里;只要參數(shù)類(lèi)型和參數(shù)名與方法形參相同,則會(huì)自動(dòng)綁定


2、使用@RequestParam 注解進(jìn)行接收
當(dāng)controller層中的方法形參名與請(qǐng)求參數(shù)名不同時(shí),可使用@RequestParam進(jìn)行映射
@RequestParam中的value屬性指定請(qǐng)求參數(shù)名;
required屬性指定該參數(shù)是否是必須傳入的,默認(rèn)是true(必須傳入) ;
defaultValue屬性來(lái)指定當(dāng)前參數(shù)的默認(rèn)值(當(dāng)形參沒(méi)有傳入值時(shí)生效)
/**
* @description: 測(cè)試@RequestParam注解
* @author: Vinci
* @date: 2023/8/24 8:28
**/
@GetMapping("/testRequestParam")
public String testRequestParam(
@RequestParam(value = "number",required = false,defaultValue = "1") int i
){
return "number=" + i;
}接下來(lái)使用PostMan進(jìn)行測(cè)試發(fā)現(xiàn),傳值則接收到值,不傳值則使用默認(rèn)值


3、@RequestBody注解
@RequestBody 注解 可將 JSON數(shù)據(jù) 轉(zhuǎn)為 Bean對(duì)象, 與@ResponseBody注解作用相反
(1) 使用實(shí)體來(lái)接收J(rèn)SON
創(chuàng)建實(shí)體對(duì)象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private String id;
private String username;
private String password;
}使用RequestBody接收
/**
* @description: 使用實(shí)體接收J(rèn)SON
* @author: Vinci
* @date: 2023/8/24 9:01
**/
@GetMapping("/testReceiveJson")
public String testReceiveJson(@RequestBody User user){
return user.toString();
}PostMan測(cè)試結(jié)果

(2)使用 Map 集合接收J(rèn)SON
/**
* @description: 使用Map接收J(rèn)SON
* @author: Vinci
* @date: 2023/8/24 9:15
**/
@GetMapping("/testMapReceiveJson")
public String testMapReceiveJson(@RequestBody Map<String,Object> maps){
return maps.toString();
}PostMan測(cè)試結(jié)果

(3) 使用 List集合接收J(rèn)SON數(shù)組
/**
* @description: 使用List集合接收J(rèn)SON數(shù)組
* @author: Vinci
* @date: 2023/8/24 9:17
**/
@GetMapping("/testListJson")
public String testListJson(@RequestBody List<User> users){
return users.toString();
}PostMan測(cè)試結(jié)果

4、@PathVariable 注解
可以使用@PathVariable注解獲取url地址欄指定位置參數(shù),url中的參數(shù)名需和controller形參一致,或是使用@PathVariable注解的value屬性進(jìn)行映射,在寫(xiě)@XXXMapping注解中的url時(shí)參數(shù)名需要使用 { } 括起來(lái)
/**
* @description: 使用@PathVariable注解獲取地址欄指定位置參數(shù)
* @author: Vinci
* @date: 2023/8/24 9:32
**/
@GetMapping("/testGetAddressBarParameters/{id}")
public String addressBarParameters(@PathVariable int id){
return String.valueOf(id);
}PostMan測(cè)試結(jié)果

到此這篇關(guān)于SpringMVC中Controller層獲取前端請(qǐng)求參數(shù)的幾種方式的文章就介紹到這了,更多相關(guān)SpringMVC Controller層獲取前端請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過(guò)程
這篇文章主要介紹了Spring cloud gateway設(shè)置context-path服務(wù)路由404排查過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Spring SpringMVC在啟動(dòng)完成后執(zhí)行方法源碼解析
這篇文章主要介紹了SpringMVC在啟動(dòng)完成后執(zhí)行方法源碼解析,還是非常不錯(cuò)的,在這里分享給大家,需要的朋友可以參考下。2017-09-09
Spring Boot 直接用jar運(yùn)行項(xiàng)目的方法
這篇文章主要介紹了Spring Boot 直接用jar運(yùn)行項(xiàng)目的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2018-02-02
SpringCloud入門(mén)實(shí)驗(yàn)環(huán)境搭建
這篇文章主要介紹了SpringCloud入門(mén)實(shí)驗(yàn)環(huán)境搭建的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用SpringCloud,感興趣的朋友可以了解下2021-04-04
Java @Value("${xxx}")取properties時(shí)中文亂碼的解決
這篇文章主要介紹了Java @Value("${xxx}")取properties時(shí)中文亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java把Map轉(zhuǎn)為對(duì)象的實(shí)現(xiàn)代碼
在項(xiàng)目開(kāi)發(fā)中,經(jīng)常碰到map轉(zhuǎn)實(shí)體對(duì)象或者對(duì)象轉(zhuǎn)map的場(chǎng)景,工作中,很多時(shí)候我們可能比較喜歡使用第三方j(luò)ar包的API對(duì)他們進(jìn)行轉(zhuǎn)化,但這里,我想通過(guò)反射的方式對(duì)他們做轉(zhuǎn)化,感興趣的同學(xué)跟著小編來(lái)看看吧2023-08-08
使用Java8?Stream流的skip?+?limit實(shí)現(xiàn)批處理的方法
Stream 作為 Java 8 的一大亮點(diǎn),它與 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念這篇文章主要介紹了使用Java8?Stream流的skip?+?limit實(shí)現(xiàn)批處理,需要的朋友可以參考下2022-07-07

