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當(dāng)中拿到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)格。不是標(biāo)準(zhǔn)也不是協(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可以通過使用通過不同的請求方式來達(dá)到不同的效果
基本使用
@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();
}注:所有的地址欄請求默認(rèn)都會是 HTTP GET 類型的。
到此這篇關(guān)于springboot項目中一些后端接收前端傳參的方法的文章就介紹到這了,更多相關(guān)springboot后端接收前端傳參內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解spring-boot actuator(監(jiān)控)配置和使用
本篇文章主要介紹了spring-boot actuator(監(jiān)控)配置和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
springmvc實現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細(xì)介紹了springmvc實現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08
詳解springboot+atomikos+druid?數(shù)據(jù)庫連接失效分析
本文主要介紹了springboot+atomikos+druid?數(shù)據(jù)庫連接失效分析,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02
SpringBoot配置Hikari數(shù)據(jù)庫連接池的詳細(xì)步驟
Spring Boot是一個開源的Java框架,它簡化了基于Spring的應(yīng)用程序的開發(fā)和部署,HikariCP是一個高性能的Java數(shù)據(jù)庫連接池,被廣泛應(yīng)用于Java開發(fā)領(lǐng)域,它是目前最快和最輕量級的連接池之一,本文介紹了SpringBoot配置Hikari數(shù)據(jù)庫連接池的詳細(xì)步驟,需要的朋友可以參考下2024-08-08
Spring線程池ThreadPoolTaskExecutor的用法及說明
這篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
Java 日期格式y(tǒng)yyy-MM-dd與YYYY-MM-dd區(qū)別
我們在java中常用的規(guī)范格式為:2023-11-11
yyyy-MM-dd HH:mm:ss:SSS 24小時制或yyyy-MM-dd hh:mm:ss:SSS 12小時制,本文就來介紹一下兩者的區(qū)別,感興趣的可以了解一下

