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

SpringMVC中@ModelAttribute與@RequestBody的區(qū)別及說明

 更新時間:2022年11月23日 11:01:05   作者:弱水提滄  
這篇文章主要介紹了SpringMVC中@ModelAttribute與@RequestBody的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

@ModelAttribute與@RequestBody的區(qū)別

最近在寫代碼的過程中,發(fā)現(xiàn)之前項目都是使用的@ModelAttribute注解,而自己的一貫使用都是@RequestBody,在網(wǎng)上找資料也沒有發(fā)現(xiàn)寫的十分具體的博客,因此自己寫了個SpringBoot的樣例進(jìn)行了測試驗證。

@ModelAttribute與@RequestBody都是用來注解解析前端發(fā)來數(shù)據(jù),并自動對應(yīng)到所定義的字段名稱。

這里先放結(jié)論

使用@ModelAttribute注解的實體類接收前端發(fā)來的數(shù)據(jù)格式需要為"x-www-form-urlencoded",@RequestBody注解的實體類接收前端的數(shù)據(jù)格式為JSON(application/json)格式。

(若是使用@ModelAttribute接收application/json格式,雖然不會報錯,但是值并不會自動填入)

測試

首先新建一個SpringBoot項目,這個不需要像SpringMVC項目那么配置麻煩,因為十分推薦這個。

導(dǎo)入需要的spring-boot-starter-web包。由于測試的前端發(fā)送的為json數(shù)據(jù),因此還需要導(dǎo)入json依賴。

? ? ? ? <dependency>
?? ??? ??? ?<groupId>net.sf.json-lib</groupId>
?? ??? ??? ?<artifactId>json-lib</artifactId>
?? ??? ??? ?<version>2.4</version>
?? ??? ??? ?<classifier>jdk15</classifier>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>commons-lang</groupId>
?? ??? ??? ?<artifactId>commons-lang</artifactId>
?? ??? ??? ?<version>2.5</version>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>commons-beanutils</groupId>
?? ??? ??? ?<artifactId>commons-beanutils</artifactId>
?? ??? ??? ?<version>1.9.2</version>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>commons-collections</groupId>
?? ??? ??? ?<artifactId>commons-collections</artifactId>
?? ??? ??? ?<version>3.2.1</version>
?? ??? ?</dependency>
?? ??? ?<dependency>
?? ??? ??? ?<groupId>commons-logging</groupId>
?? ??? ??? ?<artifactId>commons-logging</artifactId>
?? ??? ??? ?<version>1.2</version>
?? ??? ?</dependency>

根據(jù)前端發(fā)送的數(shù)據(jù),定義自己的接收實體類RuleModify,其字段名與前端發(fā)送的key值一致,若是需要改變,可以使用@SerializerName("")進(jìn)行對應(yīng)相應(yīng)的key值。這里就不貼出代碼。 

在Controller層對于要測試的方法使用@RequestBody接收前端數(shù)據(jù),可以看到數(shù)據(jù)都一一對應(yīng)到實體類中了(測試工具為postman)。

@RestController
@RequestMapping("/")
public class TestController {
?
? ? @RequestMapping(value = "/test" ,method = RequestMethod.POST)
? ? public String testJson(@RequestBody RuleModify rule){
? ? ? ? System.out.println("執(zhí)行");
? ? ? ? JSONObject jsonObject = JSONObject.fromObject(rule);
? ? ? ? System.out.println(jsonObject);
? ? ? ? return "hello";
? ? }
? ??
}

postman模擬前端發(fā)送請求。

可以看到成功打印出實體類,數(shù)據(jù)已經(jīng)對應(yīng)到字段中了。

接下來使用@ModelAttribute注解RuleModify類,可以看到JSON(application/json) 格式下,數(shù)據(jù)為空,字段沒有進(jìn)行注入。

使用postman的x-www-form-urlencoded方式進(jìn)行模擬

可以看到后端成功的注入了數(shù)據(jù)。

至于這兩個注解的選擇,還是看前端會發(fā)送什么格式的數(shù)據(jù)之后來進(jìn)行自由的選擇吧。

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

相關(guān)文章

  • java實現(xiàn)動態(tài)驗證碼

    java實現(xiàn)動態(tài)驗證碼

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)動態(tài)驗證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • Spring框架概述及核心設(shè)計思想分享

    Spring框架概述及核心設(shè)計思想分享

    Spring框架是一種開源的Java企業(yè)級應(yīng)用開發(fā)框架,提供了IoC(控制反轉(zhuǎn))容器和DI(依賴注入)等核心設(shè)計思想,SpringBoot則是在Spring基礎(chǔ)上進(jìn)一步簡化配置,提供了快速開發(fā)、內(nèi)置服務(wù)器等功能,學(xué)習(xí)Spring框架需要掌握容器、IoC和DI等概念,以及分層設(shè)計等軟件工程思想
    2025-02-02
  • SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    SpringCloud?Gateway中GatewayFilterChain執(zhí)行流程詳解

    Spring?Cloud?Gateway旨在為微服務(wù)架構(gòu)提供一種簡單有效的、統(tǒng)一的?API?路由管理方式。Spring?Cloud?Gateway?作為?Spring?Cloud?生態(tài)系中的網(wǎng)關(guān),它不僅提供統(tǒng)一的路由方式,并且基于?Filter?鏈的方式提供了網(wǎng)關(guān)基本的功能,例如:安全、監(jiān)控/埋點和限流等
    2022-10-10
  • 關(guān)于application.yml基礎(chǔ)配置以及讀取方式

    關(guān)于application.yml基礎(chǔ)配置以及讀取方式

    這篇文章主要介紹了關(guān)于application.yml基礎(chǔ)配置以及讀取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring內(nèi)部bean和級聯(lián)屬性用法詳解

    Spring內(nèi)部bean和級聯(lián)屬性用法詳解

    這篇文章主要介紹了Java內(nèi)部bean和級聯(lián)屬性用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 全面解釋Java中的serialVersionUID

    全面解釋Java中的serialVersionUID

    以下是對Java中的serialVersionUID進(jìn)行了全面的分析介紹。需要的朋友可以過來參考下
    2013-08-08
  • Java反射根據(jù)不同方法名動態(tài)調(diào)用不同的方法(實例)

    Java反射根據(jù)不同方法名動態(tài)調(diào)用不同的方法(實例)

    下面小編就為大家?guī)硪黄狫ava反射根據(jù)不同方法名動態(tài)調(diào)用不同的方法(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • java發(fā)送內(nèi)嵌圖片郵件

    java發(fā)送內(nèi)嵌圖片郵件

    這篇文章主要介紹了java發(fā)送內(nèi)嵌圖片郵件,在博客系統(tǒng)中需要郵件服務(wù)的功能,僅僅是發(fā)送文本內(nèi)容,現(xiàn)在嘗試一下發(fā)送內(nèi)嵌圖片郵件,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Mybatis Plus ActiveRecord模式的具體使用

    Mybatis Plus ActiveRecord模式的具體使用

    ActiveRecord 是一種設(shè)計模式,它是一種在軟件開發(fā)中用于管理關(guān)系數(shù)據(jù)庫的模式,本文主要介紹了Mybatis Plus ActiveRecord模式的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • spring boot 如何優(yōu)雅關(guān)閉服務(wù)

    spring boot 如何優(yōu)雅關(guān)閉服務(wù)

    這篇文章主要介紹了spring boot 如何優(yōu)雅關(guān)閉服務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11

最新評論

峨边| 樟树市| 若尔盖县| 姚安县| 龙井市| 连州市| 惠东县| 白城市| 甘洛县| 偃师市| 浦县| 湖州市| 绥芬河市| 沁源县| 台山市| 从化市| 剑河县| 玉屏| 大英县| 通化县| 日照市| 资兴市| 太和县| 遂宁市| 汝阳县| 杂多县| 新邵县| 于都县| 桓台县| 贵州省| 中阳县| 郧西县| 松原市| 烟台市| 海兴县| 志丹县| 九江市| 道孚县| 伊吾县| 东源县| 永丰县|