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可以通過使用通過不同的請求方式來達到不同的效果
基本使用
@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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解spring-boot actuator(監(jiān)控)配置和使用
本篇文章主要介紹了spring-boot actuator(監(jiān)控)配置和使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09springmvc實現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細介紹了springmvc實現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08詳解springboot+atomikos+druid?數(shù)據(jù)庫連接失效分析
本文主要介紹了springboot+atomikos+druid?數(shù)據(jù)庫連接失效分析,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02SpringBoot配置Hikari數(shù)據(jù)庫連接池的詳細步驟
Spring Boot是一個開源的Java框架,它簡化了基于Spring的應(yīng)用程序的開發(fā)和部署,HikariCP是一個高性能的Java數(shù)據(jù)庫連接池,被廣泛應(yīng)用于Java開發(fā)領(lǐng)域,它是目前最快和最輕量級的連接池之一,本文介紹了SpringBoot配置Hikari數(shù)據(jù)庫連接池的詳細步驟,需要的朋友可以參考下2024-08-08Spring線程池ThreadPoolTaskExecutor的用法及說明
這篇文章主要介紹了Spring線程池ThreadPoolTaskExecutor的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java 日期格式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ū)別,感興趣的可以了解一下