最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringMVC中RequestBody注解的List參數(shù)傳遞方式

 更新時間:2022年10月31日 09:42:27   作者:z.haoui  
這篇文章主要介紹了SpringMVC中RequestBody注解的List參數(shù)傳遞方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

RequestBody注解的List參數(shù)傳遞

Controller方法參數(shù):@RequestBody List<Long> ids

前端傳的json數(shù)據(jù):

[
? ? 1010,
? ? 1011
]

Controller方法參數(shù):@RequestBody User user

把List集合封裝在一個實(shí)體類型中,用該實(shí)體類型作為Controller的方法參數(shù)

User為實(shí)體類型,里面有個List<Long>類型的參數(shù)(假設(shè)名為userIds,且有對應(yīng)的getter、setter方法)

前端傳的json數(shù)據(jù):

{
? ? "userIds": [ 1, 2 ]
}

參考:Spring MVC 數(shù)據(jù)綁定

@RequestBody注解分析

get和post

GET可以擁有請求體,RFC 文檔中從來就沒有說過 GET 沒有請求體.RFC 只是說GET 意味著通過 URI 來識別資源。所以GET請求體中的數(shù)據(jù)一般都是不做處理的,有些 http 的 lib 里不讓甚至直接不提供 GET 方法追加請求體的操作。

POST請求擁有請求體,并且請求數(shù)據(jù)一般都是放在請求體當(dāng)中的。所以在處理POST請求時,通常都是從請求體中獲取數(shù)據(jù)。

1.@RequestBody

1.1用途:

用于接收前端傳遞給后端的json字符串中的數(shù)據(jù)。(處理json格式的數(shù)據(jù))

@RequestBody用來接收前端傳遞給后端的json字符串中的數(shù)據(jù),GET方式的請求一般通過URL中攜帶key-value參數(shù),而@RequestBody接收的是請求體中的數(shù)據(jù)(json格式的數(shù)據(jù),只有請求體中能保存json),所以使用@RequestBody接收數(shù)據(jù)的時候必須是POST方式等方式。

@RequestBody與@RequestParam()可以同時使用,但@RequestBody最多只能有一個,而@RequestParam()可以多個。

1.2語法:

(@RequestBody Map map)
(@RequestBody Object object)
  • (@RequestBody Map map)先對簡單,將json解析成Map形式的key-value對,直接通過map.get(“KeyName”)就能拿到值了
  • (@RequestBody Object object) 通過json字符串中的key來匹配對應(yīng)實(shí)體類的屬性如果匹配一致且json中的該key對應(yīng)的值符合實(shí)體類的對應(yīng)屬性的類型要求時,會調(diào)用實(shí)體類的setter方法將值注入到該屬性。

如:

public Result deleteBookById(@RequestBody HashMap<String, String> map) {
? ? ? ? this.bookService.deleteBookById(Long.parseLong(map.get("id")));
? ? ? ? return Result.createWithSuccessMessage();
? ? }
public Result updateBookById(@RequestBody Book book){
? ? ? ? Book record = this.bookService.updateBookById(book);
? ? ? ? return Result.createWithModel(record);
? ? }

注意:

在(@RequestBody Object object)中,前端POST過來的數(shù)據(jù)會通過反序列數(shù)據(jù)到實(shí)體類中,并且在反序列的過程中會進(jìn)行類型的轉(zhuǎn)換。

在json中應(yīng)該用null來代表空值,如果是""(空字符串)會判斷為空串,如果實(shí)體類屬性是String類型的,那么接受到的就是"",如果實(shí)現(xiàn)類屬性類型是Integer、Double等類型,那么接收到的就是null。

{
?? ?name:"",
?? ?age:null
}

(@RequestBody Object object)內(nèi)部是通過傳遞過來的數(shù)據(jù)中的Key尋找setter方法,有則調(diào)用,無則不作任何操作(其實(shí)可以設(shè)計)。

如果通過Key匹配到setter方法,但是Value無法轉(zhuǎn)換為對應(yīng)的實(shí)例類屬性的類型時,拋出異常。

2.@RequestParam

2.1 用途:

@RequestParam用來處理 Content-Type 為 application/x-www-form-urlencoded 編碼的內(nèi)容,Content-Type默認(rèn)為該屬性。

可以用于接收URL中的參數(shù)并捆綁到方法的參數(shù)中,也可以接受post請求體中的Content-Type 為 application/x-www-form-urlencoded的數(shù)據(jù)。(post比較常用的是json格式數(shù)據(jù))

語法:

@RequestParam(value=”參數(shù)名”,required=”true/false”,defaultValue=””)

  • value:參數(shù)的key
  • required:是否為必須,請求中必須包含該參數(shù),如果不包含就報錯。
  • defaultValue:代替的默認(rèn)參數(shù)值,設(shè)置后required將自動置false

如:

public ModelAndView getUserByName(@RequestParam("name")String name){
? ? ? ? ModelAndView mv = new ModelAndView();
? ? ? ? log.info(name);
? ? ? ? return mv;
}
//必須攜帶name參數(shù)
public ModelAndView getUserByName2(@RequestParam("name",required="true")String name){
? ? ? ? ModelAndView mv = new ModelAndView();
? ? ? ? log.info(name);
? ? ? ? return mv;
}

3.兩者混合使用

@RequestBody與@RequestParam()可以同時使用,但@RequestBody最多只能有一個,而@RequestParam()可以多個。
public Result deleteBookById(@RequestBody HashMap<String, String> map,@RequestParam("name")String name) {
? ? ? ? System.out.println(map.get("id"));
? ? ? ? System.out.println(name);
? ? ? ? return Result.createWithSuccessMessage();
}

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security 安全認(rèn)證的示例代碼

    Spring Security 安全認(rèn)證的示例代碼

    這篇文章主要介紹了Spring Security 安全認(rèn)證的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Spring項目使用Maven和BCrypt實(shí)現(xiàn)修改密碼功能方式

    Spring項目使用Maven和BCrypt實(shí)現(xiàn)修改密碼功能方式

    在數(shù)字時代,信息安全尤其是密碼安全至關(guān)重要,本文通過實(shí)例探討如何在Spring項目中利用Maven和BCrypt實(shí)現(xiàn)一個安全的密碼修改功能,我們將從環(huán)境搭建到編寫核心業(yè)務(wù)邏輯,再到完成功能測試,確保每一步都遵循最佳安全實(shí)踐,通過本文,你將了解到密碼安全的重要性
    2024-10-10
  • java微信開發(fā)API第三步 微信獲取以及保存接口調(diào)用憑證

    java微信開發(fā)API第三步 微信獲取以及保存接口調(diào)用憑證

    這篇文章主要為大家詳細(xì)介紹了java微信開發(fā)API第二步,微信獲取以及保存接口調(diào)用憑證,感興趣的小伙伴們可以參考一下
    2016-06-06
  • MyBatis?resultMap?id標(biāo)簽的錯誤使用方式

    MyBatis?resultMap?id標(biāo)簽的錯誤使用方式

    這篇文章主要介紹了MyBatis?resultMap?id標(biāo)簽的錯誤使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 聊聊Spring?Cloud?Gateway過濾器精確控制異常返回問題

    聊聊Spring?Cloud?Gateway過濾器精確控制異常返回問題

    這篇文章主要介紹了Spring?Cloud?Gateway過濾器精確控制異常返回問題,本篇任務(wù)就是分析上述現(xiàn)象的原因,通過閱讀源碼搞清楚返回碼和響應(yīng)body生成的具體邏輯,需要的朋友可以參考下
    2021-11-11
  • 最全面的JVM優(yōu)化經(jīng)驗(yàn)總結(jié)

    最全面的JVM優(yōu)化經(jīng)驗(yàn)總結(jié)

    這篇文章主要介紹了最全面的JVM優(yōu)化經(jīng)驗(yàn)總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,,需要的朋友可以參考下
    2019-06-06
  • 詳解SpringBoot如何讓指定的Bean先加載

    詳解SpringBoot如何讓指定的Bean先加載

    這篇文章主要給大家介紹了在 SpringBoot 中如何讓自己的某個指定的 Bean 在其他 Bean 前完成被 Spring 加載,文中通過代碼示例給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-06-06
  • Java springboot接口迅速上手,帶你半小時極速入門

    Java springboot接口迅速上手,帶你半小時極速入門

    這篇文章主要給大家介紹了關(guān)于SpringBoot實(shí)現(xiàn)API接口的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • 微服務(wù)之Feign的介紹與使用小結(jié)

    微服務(wù)之Feign的介紹與使用小結(jié)

    Feign 是一個聲明式的偽RPC的REST客戶端,它用了基于接口的注解方式,很方便的客戶端配置,Spring Cloud 給 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka進(jìn)行支持負(fù)載均衡,這篇文章主要介紹了微服務(wù)之Feign的介紹與使用,需要的朋友可以參考下
    2022-07-07
  • mybatis引用其他文件中的sql片段的實(shí)現(xiàn)

    mybatis引用其他文件中的sql片段的實(shí)現(xiàn)

    Mybatis中也是支持引用其他Mapper文件中的SQL片段的,本文就來介紹一下如何使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03

最新評論

德安县| 平乡县| 永昌县| 安龙县| 呼图壁县| 临猗县| 临江市| 巨鹿县| 新疆| 金湖县| 光泽县| 江陵县| 榆树市| 昌江| 攀枝花市| 蒙山县| 宜黄县| 肥西县| 云林县| 南溪县| 郑州市| 桐城市| 阿图什市| 甘德县| 扶沟县| 杭锦后旗| 左贡县| 万安县| 方山县| 普定县| 乌海市| 社旗县| 巴楚县| 南召县| 新和县| 吉水县| 六盘水市| 长岛县| 平南县| 伊宁县| 黎城县|