springboot項目中后端接收前端傳參的方法示例詳解
先創(chuàng)建一個springboot項目,并在pom文件中添加web依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>創(chuàng)建user對象:
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}創(chuàng)建一個controller:
@RestController
@RequestMapping("/store")
public class TestController {
}1、java方法入?yún)⒗锩媸裁醋⒔舛紱]有
/**
* 第一種:java方法入?yún)⒗锩媸裁醋⒔舛紱]有
* */
@RequestMapping("/noAnnotation")
public String noAnnotation(User user){
return user.toString();
}結(jié)果

適用于:請求參數(shù)比較少
缺點:請求參數(shù)比較多的時候,可能會丟參數(shù),因為get請求有長度限制。
如果參數(shù)重復(fù)了,比如:http://localhost:8080/store/noAnnotation?age=18&age=20&name=yuanhaoz,參數(shù)中age有兩個,一個等于18,另一個等于20,如果是int類型的則取最先聲明的那個;如果是String類型的,則會疊加

2、@PathVariable這種方式接收URL路徑參數(shù)作為參數(shù)
/**
* 第二種:不使用?&來拼接參數(shù)
* */
@RequestMapping("/havaPathVariable/{name}/{age}")
public String havaPathVariable(@PathVariable(value = "name")String name, @PathVariable(value = "age")int age ){
return name+age;
}@PathVariable根據(jù)value將url中的參數(shù)取出來
結(jié)果:

適用于:參數(shù)比較少,以及動態(tài)接口情況
如何改成參數(shù)非必傳:不僅要在@PathVariable()中加required = false,還要設(shè)置多個url path,這是因為url要求帶參,屬于REST參數(shù)。

結(jié)果:

如果只設(shè)置required = false話,是無法請求的。

3、@RequestBody這種方式接收前端發(fā)送過來的請求體
/**
* 第三種:@RequestBody
* */
@RequestMapping("/haveRequestBody")
public String haveRequestBody(@RequestBody User user){
return user.toString();
}
結(jié)果:

這個注解會從http請求的body當中拿到j(luò)son,并且反序列化成java對象
適用于:請求參數(shù)非常多(因為body沒有長度限制)
如果參數(shù)重復(fù)了,無論什么類型取聲明的最后一個

解析list怎么寫
body:

controller:

解析嵌套對象怎么寫
body:
在json中的每個對象里添加一個phone對象

創(chuàng)建phone對象(可以根據(jù)json中的phone對象創(chuàng)建所有字段,也可設(shè)置部分字段)
public class Phone {
private String name;
private String code;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Override
public String toString() {
return "Phone{" +
"name='" + name + '\'' +
", code='" + code + '\'' +
'}';
}
}User中要添加與json中對應(yīng)的對象,才會將json中的嵌套對象解析出來。
在user對象中添加phone,并修改tostring方法;

controller:

結(jié)果:

4、RestFul風(fēng)格 概念
Restful就是一個資源定位及資源操作的風(fēng)格。不是標準也不是協(xié)議,只是一種風(fēng)格?;谶@個風(fēng)格設(shè)計的軟件可以更簡潔,更有層次,更易于實現(xiàn)緩存等機制。

功能
資源:互聯(lián)網(wǎng)所有的事物都可以被抽象為資源
資源操作:使用POST、DELETE、PUT、GET,使用不同方法對資源進行操作。
分別對應(yīng) 添加、 刪除、修改、查詢。
傳統(tǒng)方式操作資源:通過不同的參數(shù)來實現(xiàn)不同的效果!方法單一,post 和 get
http://127.0.0.1/item/queryItem.action?id=1 查詢,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 刪除,GET或POST
使用RestFul操作資源:可以通過不同的請求方式來實現(xiàn)不同的效果!如下:請求地址一樣,但是功能可以不同!
http://127.0.0.1/item/1 查詢,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 刪除,DELETE
相比于傳統(tǒng)方式使用鏈接來訪問請求,Resful可以通過使用通過不同的請求方式來達到不同的效果
基本使用
@RequestMapping("/noAnnotation",method = {RequestMethod.GET})
public String noAnnotation(User user){
return user.toString();
}也可通過將RequestMapping替換為:
@GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping
例如:
@GetMapping("/noAnnotation")
public String noAnnotation(User user){
return user.toString();
}注:所有的地址欄請求默認都會是 HTTP GET 類型的。
到此這篇關(guān)于springboot項目中一些后端接收前端傳參的方法的文章就介紹到這了,更多相關(guān)springboot后端接收前端傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot前后端交互、全局異常處理之后端異常信息拋到前端顯示彈窗
- 前端如何調(diào)用后端接口進行數(shù)據(jù)交互詳解(axios和SpringBoot)
- 微信小程序完整項目實戰(zhàn)記錄(前端+SpringBoot后端)
- SpringBoot前端傳遞數(shù)組后端接收兩種常用的方法
- vue2前端使用axios發(fā)起post請求后端(springboot)接收不到值解決辦法
- SpringBoot整合WebSocket實現(xiàn)后端向前端主動推送消息方式
- SpringBoot的前后端聯(lián)調(diào):表單提交、AJAX登錄與狀態(tài)管理、以及JSON數(shù)據(jù)交互
相關(guān)文章
使用spring boot開發(fā)時java對象和Json對象轉(zhuǎn)換的問題
這篇文章主要介紹了使用spring boot開發(fā)時java對象和Json對象轉(zhuǎn)換的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Hibernate Validation自定義注解校驗的實現(xiàn)
這篇文章主要介紹了Hibernate Validation自定義注解校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
springboot實現(xiàn)token驗證登陸狀態(tài)的示例代碼
本文主要介紹了spring?boot?實現(xiàn)token驗證登陸狀態(tài),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java中對list map根據(jù)map某個key值進行排序的方法
今天小編就為大家分享一篇Java中對list map根據(jù)map某個key值進行排序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Java實現(xiàn)發(fā)起HTTP請求的四種方法實現(xiàn)與適用場景
Java中發(fā)起HTTP請求有多種方式,包括原生庫、第三方庫及現(xiàn)代API,以下是常見的幾種實現(xiàn)方法,本文介紹了它們的具體實現(xiàn)代碼以及性能適用場景,感興趣的可以了解下2025-06-06
Java實現(xiàn)圖片與Base64編碼互轉(zhuǎn)
這篇文章主要介紹了Java中實現(xiàn)圖片與Base64編碼互轉(zhuǎn)的方法,比較實用,需要的朋友可以參考下。2016-06-06

