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

基于SpringMVC對接前端參數注解

 更新時間:2023年09月01日 09:48:14   作者:夜白宋  
這篇文章主要介紹了基于SpringMVC對接前端參數注解的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、請求方式

HTTP/1.1 協議規(guī)定的 HTTP 請求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT這幾種。

其中 POST 一般用來向服務端提交數據,GET/HEAD請求雖然可以攜帶請求體,但是在實際瀏覽器是不被規(guī)范允許的,所以需要注意

HTTP 協議是以 ASCII 碼傳輸。他是建立在 TCP/IP 協議之上的應用層規(guī)范,

規(guī)定HTTP 請求分為三個部分:

  • 狀態(tài)行
  • headers 請求頭
  • entity-body 消息主體

類似于下面這樣:

<method> <request-URL> <version>
<headers>
<entity-body>

二、參數格式

描述
application/x-www-form-urlencoded在發(fā)送前編碼所有字符(默認)
multipart/form-data不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。
application/json作為請求頭告訴服務端消息主體是序列化的JSON字符串。除低版本的IE,基本都支持。
text/plain空格轉換為 “+” 加號,但不對特殊字符編碼。

三、注解描述

1. @RequestParam

將請求參數綁定到你控制器的方法參數上(是springmvc中接收普通參數的注解),主要是從url中解析對應的參數名,并綁定對應值,默認值為hello

語法:

@RequestParam(value=”參數名”,required=”true/false”,defaultValue=””)?
  • value:參數名
  • required:是否包含該參數,默認為true,表示該請求路徑中必須包含該參數,如果不包含就報錯。
  • defaultValue:默認參數值,如果設置了該值,required=true將失效,自動為false,如果沒有傳該參數,就使用默認值

2. @RequestBody

主要用來接收前端傳遞給后端的json字符串中的數據的(請求體中的數據的),使用@RequestBody接收數據時,一般都用POST方式進行提交。

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

注:一個請求,只有一個RequestBody;一個請求,可以有多個RequestParam。

注:當同時使用@RequestParam和@RequestBody時,@RequestParam指定的參數可以是普通元素、數組、集合、對象等等(即:當,@RequestBody 與@RequestParam可以同時使用時,原SpringMVC接收參數的機制不變,只不過RequestBody 接收的是請求體里面的JSON數據;而RequestParam接收的是key-value里面的參數,所以它會被切面進行處理從而可以用普通元素、數組、集合、對象等接收。即:如果參數時放在請求體中,application/json傳入后臺的話,那么后臺要用@RequestBody才能接收到;如果不是放在請求體中的話,那么后臺接收前臺傳過來的參數時,要用@RequestParam來接收,或則形參前 什么也不寫也能接收。

注:如果參數前寫了@RequestParam(xxx),那么前端必須有對應的xxx名字才行(不管其是否有值,當然可以通過設置該注解的required屬性來調節(jié)是否必須傳),如果沒有xxx名的話,那么請求會出錯,報400。

注:如果參數前不寫@RequestParam(xxx)的話,那么就前端可以有可以沒有對應的xxx名字才行,如果有xxx名的話,那么就會自動匹配;沒有的話,請求也能正確發(fā)送。

追注:這里與feign消費服務時不同;feign消費服務時,如果參數前什么也不寫,那么會被默認是@RequestBody的。

四、實際調用

1.Get請求

1.1 普通元素傳參

前端請求

在這里插入圖片描述

后端接收入參:

@GetMapping("/testPrint")
    public void testPrint1(String name) {
        System.out.println("testPrint1: " + name);
    }
    或
    @GetMapping("/testPrint")
    public void testPrint2(@RequestParam("name") String name) {
        System.out.println("testPrint2: " + name);
    }

1.2 數組傳參

前端請求

在這里插入圖片描述

后端接收入參:

@GetMapping("/testPrint1")
    public void testPrint1(String[] name) {
        System.out.println("testPrint1: " + JSON.toJSONString(name));
    }
	或
    @GetMapping("/testPrint2")
    public void testPrint2(@RequestParam("name") String[] name) {
        System.out.println("testPrint2: " + JSON.toJSONString(name));
    }

2.Post請求 

2.1 application/x-www-form-urlencoded請求傳參

前端請求類型

在這里插入圖片描述

后端接收入參:

@PostMapping("/testPrint1")
    public void testPrint1(Bb bb) {
        System.out.println("testPrint1: " + JSON.toJSONString(bb));
    }

此處一定要注意不能使用@RequestBody,否則就會拋出415錯誤, “Unsupported Media Type”,

2.2 application/json請求傳參

前端請求類型

在這里插入圖片描述

后端接收入參:

@PostMapping("/testPrint2")
    public void testPrint2(@RequestBody Bb bb) {
        System.out.println("testPrint2: " + JSON.toJSONString(bb));
    }

此處一定要使用@RequestBody,否則無法解析JSON數據

總結

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

相關文章

  • 詳解SpringBoot AOP 攔截器(Aspect注解方式)

    詳解SpringBoot AOP 攔截器(Aspect注解方式)

    這篇文章主要介紹了詳解SpringBoot AOP 攔截器 Aspect,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 深入學習springboot線程池的使用和擴展

    深入學習springboot線程池的使用和擴展

    這篇文章主要介紹了深入學習springboot線程池的使用和擴展,springboot框架提供了@Async注解,幫助我們更方便的將業(yè)務邏輯提交到線程池中異步執(zhí)行,需要的朋友可以參考下
    2019-06-06
  • springboot+mybatis配置控制臺打印sql日志的方法

    springboot+mybatis配置控制臺打印sql日志的方法

    這篇文章主要介紹了springboot+mybatis配置控制臺打印sql日志的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java Spring Boot消息服務萬字詳解分析

    Java Spring Boot消息服務萬字詳解分析

    在實際項目開發(fā)中,有時需要與其他系統(tǒng)進行集成完成相關業(yè)務功能,這種情況最原始做法是程序內部相互調用,除此之外,還可以用消息服務中間件進行業(yè)務處理,用消息服務中間件處理業(yè)務能夠提升系統(tǒng)的異步通信和擴展解耦能力。Spring Boot對消息服務管理提供了非常好的支持
    2021-10-10
  • Java快速排序與歸并排序及基數排序圖解示例

    Java快速排序與歸并排序及基數排序圖解示例

    快速排序是基于二分的思想,對冒泡排序的一種改進。主要思想是確立一個基數,將小于基數的數放到基數左邊,大于基數的數字放到基數的右邊,然后在對這兩部分進一步排序,從而實現對數組的排序
    2022-09-09
  • Java中設置session超時(失效)的三種方法

    Java中設置session超時(失效)的三種方法

    這篇文章主要介紹了Java中設置session超時(失效)的三種方法,本文講解了在web容器中設置、在工程的web.xml中設置、通過java代碼設置3種方法,需要的朋友可以參考下
    2015-07-07
  • IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline)

    IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline)

    今天小編就為大家分享一篇關于IntelliJ IDEA中查看文件內所有已聲明的方法(類似eclipse的outline),小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • springboot集成測試里的redis

    springboot集成測試里的redis

    這篇文章主要介紹了springboot集成測試里的redis,本文給大家分享了源碼,添加依賴添加mock的方法,需要的朋友可以參考下
    2018-11-11
  • Java中String判斷值為null或空及地址是否相等的問題

    Java中String判斷值為null或空及地址是否相等的問題

    這篇文章主要介紹了Java中String判斷值為null或空及地址是否相等的問題,文中舉了簡單的例子對字符串類型的值和地址問題進行講解,需要的朋友可以參考下
    2016-01-01
  • SpringBoot 啟動報錯Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379問題的解決方案

    SpringBoot 啟動報錯Unable to connect to 

    這篇文章主要介紹了SpringBoot 啟動報錯Unable to connect to Redis server: 127.0.0.1/127.0.0.1:6379問題的解決方案,文中通過圖文結合的方式給大家講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-10-10

最新評論

大埔区| 固镇县| 天镇县| 蒙山县| 岳阳县| 紫金县| 南漳县| 康马县| 随州市| 闽侯县| 开阳县| 阿拉善左旗| 朝阳县| 义乌市| 固安县| 霸州市| 保靖县| 酒泉市| 澄迈县| 崇明县| 彭阳县| 汶川县| 平远县| 睢宁县| 竹北市| 留坝县| 龙岩市| 南昌县| 新余市| 陆良县| 泸州市| 武邑县| 天气| 上林县| 个旧市| 铜梁县| 额尔古纳市| 崇文区| 通海县| 阿尔山市| 芜湖市|