SpringBoot在接收參數(shù)的七種方式詳解
SpringBoot接收參數(shù)的七種方式
隨著前后端的分離,接口方式開發(fā)成為普遍的開發(fā)形式。前端相對于后端來說,常用的接口傳參方式就一定要了解和熟悉。
下面 我們梳理了常用的七種 Controller層接受參數(shù)的方式。
1、直接把請求參數(shù)寫在Controller相應(yīng)的方法的形參中,此場景適用于請求參數(shù)較少的情況
后端代碼:
@RequestMapping("/addUser1") public String addUser1(String username,String password) { System.out.println("username is:"+username); System.out.println("password is:"+password); return "success"; }
前端傳參:
url請求路徑: http://localhost:8090/student/list?username=xiaom&passsword=123456 GET請求vue代碼: POST請求vue代碼:
此處的RequestMapping中沒有限定請求方式,那么get和post的請求方式都是可以接收的。get的請求方式我們可以直接在瀏覽器中輸入地址,端口可以自行在application.properties中配置,然后使用postman工具進(jìn)行測試
2、封裝一個bean直接來接收;我們這里使用上一個案例中封裝好的User類來進(jìn)行接收,同時適用get、post方法。
UserController中的代碼如下:
@RequestMapping("/addUser2") public String addUser2(User user) { System.out.println("id is:"+user.getId()); System.out.println("username is:"+user.getUsername()); System.out.println("password is:"+user.getPassword()); return "success"; }
此時我們可以繼續(xù)使用postman進(jìn)行測試,注意這里傳入的參數(shù)名要和User里面的屬性名稱一致(首字母之外的大小寫保持一致,已測),否則無法識別接收,則相應(yīng)的值會為null
3、通過原生的HttpServletRequest接收,同時適用get、post方法。
@RequestMapping("/addUser3") public String addUser3(HttpServletRequest request) { String username=request.getParameter("username"); String password=request.getParameter("password"); System.out.println("username is:"+username); System.out.println("password is:"+password); return "success"; }
測試方法同上,這里就不再演示。
4、通過@PathVariable獲取rest風(fēng)格請求路徑中的參數(shù)
后端代碼:
@RequestMapping(value="/addUser4/{username}/{password}") public String addUser4(@PathVariable String username, @PathVariable String password) { System.out.println("username is:"+username); System.out.println("password is:"+password); return "success"; }
前端代碼:
http://127.0.0.1:8883/addUser4/xiadewang/123456
此時測試訪問路徑應(yīng)該是rest風(fēng)格的路徑,如
http://127.0.0.1:8883/addUser4/xiadewang/123456
自動將URL中模板變量{username}和{password}綁定到通過@PathVariable注解的同名參數(shù)上注意這里的參數(shù)個數(shù)一定要保持相同,否則會報404的錯誤。
5、使用@ModelAttribute注解請求參數(shù),同時適用get,post
@RequestMapping(value="/addUser5") public String addUser5(@ModelAttribute("user") User user) { System.out.println("id is:"+user.getId()); System.out.println("username is:"+user.getUsername()); System.out.println("password is:"+user.getPassword()); return "success"; }
6、使用注解@RequestParam綁定請求參數(shù)到方法形參,同時適用get、post方法
@RequestMapping(value="/addUser6") public String addUser6(@RequestParam("username") String username, @RequestParam("password") String password) { System.out.println("username is:"+username); System.out.println("password is:"+password); return "success"; }
注意:當(dāng)請求參數(shù)username或者password不存在時會有異常發(fā)生,可以通過設(shè)置屬性required=false解決 例如:
@RequestParam(value="username", required=false)
7、JSON形式的參數(shù): 使用注解@RequestBody綁定請求參數(shù)到方法形參,只適用post方法
@RequestMapping(value="/addUser7") public String addUser7(@RequestBody User user) { System.out.println("id is:"+user.getId()); System.out.println("username is:"+user.getUsername()); System.out.println("password is:"+user.getPassword()); return "success"; }
關(guān)于最后這個@RequestBody要重點講解下,此時前端發(fā)送請求不能使用get方式,需要使用post方式,還有請求傳遞的參數(shù)需要是json字符串,這里重點要設(shè)置的是Content-Type,要將其設(shè)置為application/json。我們此時使用postman測試如下 這里如果不設(shè)置content-type的話,會報錯誤。
小結(jié) RequestBody和RequestParam同時使用的場景,代碼如下
@RequestMapping(value="/addUser8") public String addUser8(@RequestBody User user,@RequestParam("token") String token) { System.out.println("token is:"+token); System.out.println("id is:"+user.getId()); System.out.println("username is:"+user.getUsername()); System.out.println("password is:"+user.getPassword()); return "success"; }
token放在請求頭,user放在請求體
到此這篇關(guān)于SpringBoot在接收參數(shù)的七種方式詳解的文章就介紹到這了,更多相關(guān)SpringBoot接收參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot Controller接收參數(shù)的幾種常用方式
- SpringBoot在Controller層接收參數(shù)的n種姿勢(超詳細(xì))
- SpringBoot開發(fā)詳解之Controller接收參數(shù)及參數(shù)校驗
- SpringBoot實現(xiàn)前后端、json數(shù)據(jù)交互以及Controller接收參數(shù)的幾種常用方式
- Springboot?接口需要接收參數(shù)類型是數(shù)組問題
- 詳解SpringBoot Controller接收參數(shù)的幾種常用方式
- SpringBoot中Get請求和POST請求接收參數(shù)示例詳解
相關(guān)文章
MyBatis 源碼分析 之SqlSession接口和Executor類
mybatis框架在操作數(shù)據(jù)的時候,離不開SqlSession接口實例類的作用,下面通過本文給大家實例剖析MyBatis 源碼分析之SqlSession接口和Executor類,需要的朋友參考下吧2017-02-02Java字符串處理全解析(String、StringBuilder與StringBuffer)
這篇文章主要介紹了Java字符串處理全解析(String、StringBuilder與StringBuffer),本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04利用Spring Boot如何開發(fā)REST服務(wù)詳解
這篇文章主要給大家介紹了關(guān)于利用Spring Boot如何開發(fā)REST服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12JDBC 實現(xiàn)通用的增刪改查基礎(chǔ)類方法
下面小編就為大家分享一篇JDBC 實現(xiàn)通用的增刪改查基礎(chǔ)類方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Spring Web MVC和Hibernate的集成配置詳解
這篇文章主要介紹了Spring Web MVC和Hibernate的集成配置詳解,具有一定借鑒價值,需要的朋友可以參考下2017-12-12