詳解SpringBoot如何優(yōu)雅的進(jìn)行前后端通信
寫(xiě)在前面
對(duì)于初學(xué)者來(lái)說(shuō),困難的不是理論知識(shí),而是如何在程序中具體實(shí)現(xiàn)。
現(xiàn)在的項(xiàng)目基本上都是前后端分離的項(xiàng)目,如何打通前后端,接收前端傳過(guò)來(lái)的參數(shù)呢?
廢話不多說(shuō),這篇文章就來(lái)說(shuō)一說(shuō)接收前端參數(shù)的具體操作
一、獲取路徑中的值
1.1 核心代碼
@GetMapping("/getArticle/{id}")
public Article getArticle(@PathVariable("id") Long id){
System.out.println("獲取到路徑中的值為:"+id);
return parmsService.findArticleById(id);
}
1.2 測(cè)試結(jié)果
在訪問(wèn)“http://localhost:8080/article/1” 時(shí),程序會(huì)自動(dòng)將URL中的模板變量{id} 綁定到通過(guò)@PathVariable注解的同名參數(shù)上,所以程序中可以獲取到id=1


二、獲取路徑中的參數(shù)
2.1 核心代碼
@RequestMapping(value = "/addUser/",method = RequestMethod.POST)
public String addUser(String name,String sex,int age){
System.out.println("獲取到參數(shù)中的值為:"+name+","+sex+","+age);
return "添加文章成功";
}
2.2 測(cè)試結(jié)果
這里的參數(shù)和上面的不一樣,這里的參數(shù)是通過(guò)“=”隔開(kāi)的,多個(gè)參數(shù)使用&分割。 例如測(cè)試?yán)又械?ldquo;http://localhost:8080/?name=小凡&sex=男&age=18”


三、通過(guò)Bean接收對(duì)象參數(shù)
3.1 核心代碼
//①User
@Data
public class User {
private Integer id;
private String name;
private String sex;
private Integer age;
}
?
?
//接收參數(shù)方法
@PostMapping("/addnewUser/")
public String addUser(User user){
System.out.println(user);
return "添加用戶成功";
}3.2 測(cè)試結(jié)果
這里直接將前端傳過(guò)來(lái)的參數(shù)映射到User 對(duì)象上


四、HttpServletRequest接收參數(shù)
4.1 核心代碼
@PostMapping("/addBook/")
public String addBook(HttpServletRequest request){
String bookName = request.getParameter("bookName");
String author = request.getParameter("author");
System.out.println("獲取到參數(shù)中的值為:"+bookName+","+author);
return "添加書(shū)籍成功";
}
4.2 測(cè)試結(jié)果


五、用@RequestParam接收參數(shù)
5.1 核心代碼
@GetMapping("/getParams")
public String getParms(@RequestParam("param1") String param1,@RequestParam("param2") String param2){
System.out.println("獲取到參數(shù)中的值為:"+param1+","+param2);
return "Param1: " + param1 + ", parm2: " + param2;
}
5.2 測(cè)試結(jié)果


六、 用@RequestBody 接收json數(shù)據(jù)
6.1 核心代碼
//① 定義User實(shí)體對(duì)象
@Data
public class User {
private Integer id;
private String name;
private String sex;
private Integer age;
}
//② 接收參數(shù)
@PostMapping("/addUsers")
public List<User> addUsers(@RequestBody List<User> users){
System.out.println(""+users);
return users;
}
6.2 測(cè)試結(jié)果


七、接收文件 MultipartFile
7.1 核心代碼
@PostMapping("/singleFileUpload")
public String singleFileUpload(@RequestParam("file") MultipartFile file){
//文件存儲(chǔ)路徑
final String BASE_PATH = "E:\xiezhrspace\parm-demo\";
if(file.isEmpty()){
return "文件為空";
}
//獲取文件名
String fileName = file.getOriginalFilename();
?
try {
//新建一個(gè)文件路徑
File dest = new File(BASE_PATH + fileName);
//判斷路徑是否存在,如果不存在就創(chuàng)建一個(gè)
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdirs();
}
//將上傳文件保存到一個(gè)目標(biāo)文件當(dāng)中
file.transferTo(dest);
?
} catch (IOException e) {
e.printStackTrace();
}
return "上傳成功";
}
7.2 測(cè)試結(jié)果


以上就是詳解SpringBoot如何優(yōu)雅的進(jìn)行前后端通信的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot前后端通信的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot實(shí)現(xiàn)jsonp跨域通信的方法示例
- SpringBoot整合websocket實(shí)現(xiàn)即時(shí)通信聊天
- SpringBoot實(shí)現(xiàn)WebSocket全雙工通信的項(xiàng)目實(shí)踐
- SpringBoot中集成串口通信的項(xiàng)目實(shí)踐
- Springboot實(shí)現(xiàn)ModbusTCP通信的示例詳解
- SpringBoot整合GRPC微服務(wù)遠(yuǎn)程通信的實(shí)現(xiàn)示例
- SpringBoot集成netty實(shí)現(xiàn)websocket通信功能
相關(guān)文章
SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解,在SpringBoot的日常開(kāi)發(fā)中,一般都是同步調(diào)用的,但實(shí)際中有很多場(chǎng)景非常適合使用異步來(lái)處理,需要的朋友可以參考下2024-01-01
Springcloud Nacos基本操作代碼實(shí)例
這篇文章主要介紹了Springcloud Nacos基本操作代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
java中基本注解的知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于java中基本注解的知識(shí)點(diǎn)總結(jié),有需要的朋友們可以跟著學(xué)習(xí)下。2021-06-06
Intellij idea遠(yuǎn)程debug連接tomcat實(shí)現(xiàn)單步調(diào)試
這篇文章主要介紹了Intellij idea遠(yuǎn)程debug連接tomcat實(shí)現(xiàn)單步調(diào)試,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
關(guān)于Java中的頂層類(lèi)修飾問(wèn)題
這篇文章主要介紹了關(guān)于Java中的頂層類(lèi)修飾問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
SpringData JPA中@OneToMany和@ManyToOne的用法詳解
這篇文章主要介紹了SpringData JPA中@OneToMany和@ManyToOne的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Java Swing 只關(guān)閉當(dāng)前窗體的實(shí)現(xiàn)
這篇文章主要介紹了Java Swing 只關(guān)閉當(dāng)前窗體的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
關(guān)于Java的Character類(lèi)詳解
這篇文章主要介紹了關(guān)于Java的Character類(lèi)詳解,Java中的Character類(lèi)是一個(gè)包裝類(lèi),用于封裝一個(gè)基本數(shù)據(jù)類(lèi)型char的值,它提供了一些靜態(tài)方法來(lái)操作字符,需要的朋友可以參考下2023-05-05
Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標(biāo)點(diǎn)輸入無(wú)效的完美解決方法
Mac OS X 下基于 Java 的程序會(huì)出現(xiàn)中文標(biāo)點(diǎn)輸入無(wú)效的問(wèn)題,在中文輸入法狀態(tài),可以輸入中文字,但輸入中文標(biāo)點(diǎn)最后上去的是英文標(biāo)點(diǎn).這篇文章主要介紹了Mac OS X 下 IntelliJ IDEA、jEdit 等 Java 程序中文標(biāo)點(diǎn)輸入無(wú)效的完美解決方法,需要的朋友可以參考下2016-10-10

