springboot controller參數(shù)注入方式
基本類型參數(shù)
以上為例,接收基本類型參數(shù)時(shí),可以把 name
和 age
封裝進(jìn)對(duì)象,也可以不封裝,執(zhí)行結(jié)果是一樣的。
@RequestParam
也可以不用,只要接收的參數(shù)名和傳輸?shù)膮?shù)名相等即可。
get
post
請(qǐng)求都可。
@PostMapping("/simpleField") public String simpleField(@RequestParam("name") String name,@RequestParam("age") String age) { return name + age; }
不能使用 @RequestBody
, @RequestBody
指定參數(shù)接收 json 格式的數(shù)據(jù),只能用封裝類接收參數(shù),錯(cuò)誤使用的示例如下
@PostMapping("/t") public String t(@RequestBody String a,String b) { return a + b; }
接收對(duì)象類型參數(shù)
1.不使用 @RequestBody
前端傳輸參數(shù)格式如 postman 所示,只需要參數(shù)名稱能夠?qū)?yīng)即可,如果屬性是對(duì)象,則使用.對(duì)象屬性名
來(lái)指明屬性,如果屬性是數(shù)組或者集合,則需要加上[下標(biāo)]
來(lái)指定下標(biāo)。
get
post
請(qǐng)求都行。
@Data public class Album { private Integer musicCount; private String[] musics; private List<Person> musicians; private Person[] people; }
@RestController @RequestMapping("/test") public class TestController { @Resource private ObjectMapper json; @PostMapping("/test") public String test(Album album) throws JsonProcessingException { return json.writeValueAsString(album); } }
2.使用 @RequestBody
@RequestBody
指定參數(shù)將接收json數(shù)據(jù)格式,需要把請(qǐng)求頭的 Content-Type
設(shè)置為 application/json
,按照上面的例子,前端傳輸?shù)臄?shù)據(jù)格式如下
@RestController @RequestMapping("/test") public class TestController { @Resource private ObjectMapper json; @PostMapping("/test") public String test(@RequestBody Album album) throws JsonProcessingException { return json.writeValueAsString(album); } }
接收對(duì)象類型數(shù)組時(shí)需要在數(shù)組參數(shù)前使用 @RequestBody
,@RequestBody
的作用是接收 json 格式的數(shù)據(jù)封裝成對(duì)象。
不使用 @RequestBody
的話會(huì)報(bào)沒(méi)有默認(rèn)構(gòu)造函數(shù)的異常。
接收基本類型數(shù)組
接收基本類型數(shù)組的方式和接收基本類型一樣,只要接收的參數(shù)名和傳輸?shù)膮?shù)名相等即可。
get
post
請(qǐng)求都行。
以下為例,有些前端傳輸?shù)臄?shù)組參數(shù)格式是 ?strs[]=strs1&strs[]=strs2
,這種情況下可以在方法參數(shù)前使用 @RequestParam("strs[]")
來(lái)接收參數(shù)
@RestController @RequestMapping("/test") public class TestController { @Resource private ObjectMapper json; @PostMapping("/array") public String array(String[] strs,Integer[] ints) throws JsonProcessingException { return json.writeValueAsString(strs)+" "+json.writeValueAsString(ints); } }
接收基本類型集合
如果直接使用基本類型集合接收數(shù)據(jù),則必須使用 @RequestBody
,不使用 @RequestBody
的話必須把集合封裝進(jìn)類,如本文 接收對(duì)象類型參數(shù) 所示,使用 @RequestBody
的示例如下
@PostMapping("/array") public String test(@RequestBody List<String> names) throws JsonProcessingException { return json.writeValueAsString(names); }
接收對(duì)象類型數(shù)組和集合
接收對(duì)象類型數(shù)組和集合時(shí)如果不封裝進(jìn)實(shí)體類,則必須使用 @RequestBody
,封裝進(jìn)實(shí)體類的方式見本文
接收對(duì)象類型參數(shù)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot如何實(shí)現(xiàn)調(diào)用controller和Service層方法
- springboot中的controller參數(shù)映射問(wèn)題小結(jié)
- springboot中Controller內(nèi)文件上傳到本地及阿里云操作方法
- springboot如何通過(guò)controller層實(shí)現(xiàn)頁(yè)面切換
- springboot Controller直接返回String類型帶來(lái)的亂碼問(wèn)題及解決
- SpringBoot之controller參數(shù)校驗(yàn)詳解
- springboot中@RestController注解實(shí)現(xiàn)
- SpringBoot通過(guò)注解監(jiān)測(cè)Controller接口的代碼示例
- SpringBoot中@RestControllerAdvice @ExceptionHandler異常統(tǒng)一處理類失效原因分析
- SpringBoot和MybatisPlus實(shí)現(xiàn)通用Controller示例
相關(guān)文章
一文教你使用Java?Calendar類進(jìn)行日期計(jì)算
在日常開發(fā)中,我們常常需要進(jìn)行日期計(jì)算,比如計(jì)算兩個(gè)日期之間的天數(shù)、月數(shù),在Java中,我們可以使用Java?Calendar類來(lái)進(jìn)行日期計(jì)算,下面就跟隨小編一起來(lái)學(xué)習(xí)一下吧2023-10-10Springboot 接口對(duì)接文件及對(duì)象的操作方法
這篇文章主要介紹了Springboot 接口對(duì)接文件及對(duì)象的操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07SpringBoot項(xiàng)目啟動(dòng)后再請(qǐng)求遠(yuǎn)程接口的解決方式
Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化Spring應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等,這篇文章主要介紹了SpringBoot項(xiàng)目啟動(dòng)后再請(qǐng)求遠(yuǎn)程接口的實(shí)現(xiàn)方式?,需要的朋友可以參考下2023-02-02Spring cloud oauth2如何搭建認(rèn)證資源中心
這篇文章主要介紹了Spring cloud oauth2如何搭建認(rèn)證資源中心,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11解決mapper.xml中resultType映射類型的問(wèn)題
這篇文章主要介紹了解決mapper.xml中resultType映射類型的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06