【SpringMVC】深入解析使用 Postman 在請求中傳遞對象類型、數組類型、參數類型的參數方法和后端參數重命名、及非必傳參數設置的方法

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述


SpringMVC—請求傳參


1. 傳遞對象


如果參數比較多時,方法聲明就需要有很多形參;并且后續每次新增一個參數,也需要修改方法聲明.

我們不妨把這些參數封裝為一個對象


Spring MVC 也可以自動實現對象參數的賦值,比如 Userinfo 對象:

在這里插入圖片描述


我們對 Userinfo 定義屬性:name ,gender ,age,并且通過下列方式,重寫 gettersettertoString 方法:

在這里插入圖片描述

package com.example.springmvc_demo;public class Userinfo {private String name;private Integer gender;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getGender() {return gender;}public void setGender(Integer gender) {this.gender = gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Userinfo{" +"name='" + name + '\'' +", gender=" + gender +", age=" + age +'}';}
}

傳遞對象代碼實現:

在這里插入圖片描述


我們啟動程序,通過 Postman 構造請求:

在這里插入圖片描述


在這里插入圖片描述


如果我們把屬性的 Integer 設置成 int,并且不傳值 (取消勾選),也不會報錯,默認為0;

在這里插入圖片描述

我們在傳遞對象時,設置的屬性名字,必須與后端代碼中的對應屬性的名字相同!


2. 后端參數重命名(后端參數映射)


某些特殊的情況下,前端傳遞的參數 key 和我們后端接收的key可以不一致;

  • 比如 前端 傳遞了一個 kw 給后端,而 后端 是使用 keyword 字段來接收的;

  • 這樣就會出現參數接收不到的情況;

  • 如果出現這種情況,我們就可以使用@RequestParam來重命名前后端的參數值


具體示例如下,后端實現代碼:

在這里插入圖片描述


使用 Postman 發送請求并傳參,通過傳參結果我們可以知道,對于前端命名的 kw 是可以正確傳參的:

在這里插入圖片描述


但是,如果我們使用后端命名的 keyword ,則無法傳參:

在這里插入圖片描述


我們查看錯誤日志:

在這里插入圖片描述

報錯信息的意思是:方法參數類型的所需請求參數‘kw’不存在


因此,我們加了注解 @RequestParam("kw") 后, kw 這個參數就是必須傳遞的了;

但是我們剛剛在 Postman 構造請求時,并沒有使用 kw 參數,keyword 是前端的 kw 賦值的,而不是r6 方法中,傳入的參數 keyword

在這里插入圖片描述


結論:

  • 使用 @RequestParam 進行參數重命名時,請求參數只能和 @RequestParam 聲明的名稱一致,才能進行參數綁定和賦值;

  • 使用 @RequestParam 進行參數重命名時,參數就變成了必傳參數


3. 非必傳參數設置


如果我們的實際業務前端的參數是一個非必傳的參數,針對上述問題,如何解決呢?

先來了解下參數必傳的原因,我們查看@RequestParam 注解的實現細節,就可以發現端倪,注解實現如下:

在這里插入圖片描述


可以看到 required 的默認值為 true,表示含義就是:該注解修飾的參數默認為必傳

既然如此,我們可以通過設置 @RequestParam 中的 required=false 來避免不傳遞時報錯;


具體實現如下:

在這里插入圖片描述

可以看到,添加 required=false 之后,kw 前面也加了key,變成了 value =“kw”

注解屬性賦值時,沒有指明key的話,默認為 value 屬性;

如果需要有多個屬性進行賦值時,需要寫上 key


重寫運行程序,再次使用 Postman 發送請求,響應結果的值雖然為 null,但是沒有報錯:

在這里插入圖片描述


4. 傳遞數組


Spring MVC可以自動綁定數組參數的賦值,后端實現代碼:

在這里插入圖片描述

注意打印數組的 Arrays.toString(kunkunLike)


打開 Postman ,重新構造數組請求:

在這里插入圖片描述


也可以這樣:

在這里插入圖片描述


5. 傳遞集合


在這里插入圖片描述


運行程序,使用 Postman 發送請求:

在這里插入圖片描述

說明如果要傳遞集合,我們的后端代碼是不可以這樣寫的;


我們查看錯誤日志:

在這里插入圖片描述

錯誤日志的意思是:沒有為接口java.util.List找到主要的或唯一的構造函數

但是錯誤日志并不是根本原因,要想解決問題,傳遞參數,我們就需要使用@RequestParam綁定參數關系


集合參數:

  • 和數組類似,同一個請求參數名有為多個,且需要使用@RequestParam綁定參數關系
  • 默認情況下,請求中參數名相同的多個值,是封裝到數組

  • 如果要封裝到集合,要使用@RequestParam綁定參數關系


請求方式和數組類似:

在這里插入圖片描述


在這里插入圖片描述


在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71889.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71889.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71889.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一個差勁的軟件設計

項目概況: 之前自己設計并開發了一個用C#開發的上位機軟件,整個軟件只有一個Form,一個TabControl,3個TabControlPanel,總共100多個lable、textbox、ListBox等控件都放在這3個TabControlPanel里。 問題: 1.…

Linux練級寶典->進程控制詳解(進程替換,fork函數)

目錄 進程創建 fork函數 寫時拷貝 進程終止 進程退出碼 exit函數 _exit函數 return,exit _exit之間的區別和聯系 進程等待 進程等待的必要性 獲取子進程status 進程等待的方法 wait waipid 多子進程創建理解 非阻塞輪詢檢測子進程 進程程序替換 替…

RabbitMq--消息可靠性

12.消息可靠性 1.消息丟失的情況 生產者向消息代理傳遞消息的過程中,消息丟失了消息代理( RabbitMQ )把消息弄丟了消費者把消息弄丟了 那怎么保證消息的可靠性呢,我們可以從消息丟失的情況入手——從生產者、消息代理&#xff0…

Windows中在VSCode/Cursor上通過CMake或launch文件配置CUDA編程環境

前置步驟 安裝符合GPU型號的CUDA Toolkit 配置好 nvcc 環境變量 安裝 Visual Studio 參考https://blog.csdn.net/Cony_14/article/details/137510909 VSCode 安裝插件 Nsight Visual Studio Code Edition 注意:不是vscode-cudacpp。若兩個插件同時安裝,…

Spark(8)配置Hadoop集群環境-使用腳本命令實現集群文件同步

一.hadoop的運行模式 二.scp命令————基本使用 三.scp命令———拓展使用 四.rsync遠程同步 五.xsync腳本集群之間的同步 一.hadoop的運行模式 hadoop一共有如下三種運行方式: 1. 本地運行。數據存儲在linux本地,測試偶爾用一下。我們上一節課使用…

聚焦兩會:科技與發展并進,賽逸展2025成創新新舞臺

在十四屆全國人大三次會議和全國政協十四屆三次會議期間,代表委員們圍繞多個關鍵議題展開深入討論,為國家未來發展謀篇布局。其中,技術競爭加劇與經濟轉型需求成為兩會焦點,將在首都北京舉辦的2025第七屆亞洲消費電子技術貿易展&a…

【音視頻】ffmpeg命令提取像素格式

1、提取YUV數據 提取yuv數據,并保持分辨率與原視頻一致 使用-pix_fmt或-pixel_format指定yuv格式提取數據,并保持原來的分辨率 ffmpeg -i music.mp4 -t "01:00" -pixel_format yuv420p music.yuv提取成功后,可以使用ffplay指定y…

【從零開始學習計算機科學】計算機體系結構(二)指令級并行(ILP)

【從零開始學習計算機科學】【從零開始學習計算機科學】計算機體系結構(二)指令級并行(ILP) ILP流水線(pipeline)流水線調度循環展開和循環流水循環展開。循環展開的具體步驟可以描述為,軟件流水(循環流水)。我們可以通過流水線的思想處理循環的執行,即不需要這一次的…

android edittext 防止輸入多個小數點或負號

有些英文系統的輸入法,或者定制輸入法。使用xml限制不了輸入多個小數點和多個負號。所以代碼來控制。 一、通過XML設置限制 <EditTextandroid:id="@+id/editTextNumber"android:layout_width="wrap_content"android:layout_height="wrap_conten…

2019年藍橋杯第十屆CC++大學B組真題及代碼

目錄 1A&#xff1a;組隊&#xff08;填空5分_手算&#xff09; 2B&#xff1a;年號字符&#xff08;填空5分_進制&#xff09; 3C&#xff1a;數列求值&#xff08;填空10分_枚舉&#xff09; 4D&#xff1a;數的分解&#xff08;填空10分&#xff09; 5E&#xff1a;迷宮…

從C#中的MemberwiseClone()淺拷貝說起

MemberwiseClone() 是 C# 中的一個方法&#xff0c;用于創建當前對象的淺拷貝&#xff08;shallow copy&#xff09;。它屬于 System.Object 類&#xff0c;因此所有 C# 對象都可以調用該方法。 1. MemberwiseClone() 的含義 淺拷貝&#xff1a;MemberwiseClone() 會創建一個新…

筆記六:單鏈表鏈表介紹與模擬實現

在他一生中&#xff0c;從來沒有人能夠像你們這樣&#xff0c;以他的視角看待這個世界。 ---------《尋找天堂》 目錄 文章目錄 一、什么是鏈表&#xff1f; 二、為什么要使用鏈表&#xff1f; 三、 單鏈表介紹與使用 3.1 單鏈表 3.1.1 創建單鏈表節點 3.1.2 單鏈表的頭插、…

尚硅谷爬蟲note15n

1. 多條管道 多條管道開啟&#xff08;2步&#xff09;&#xff1a; (1)定義管道類 &#xff08;2&#xff09;在settings中開啟管道 在pipelines中&#xff1a; import urllib.request # 多條管道開啟 #(1)定義管道類 #&#xff08;2&#xff09;在setti…

oracle檢查字段為空

在Oracle數據庫中&#xff0c;檢查字段是否為空通常涉及到使用IS NULL條件。如果你想查詢某個表中的字段是否為空&#xff0c;你可以使用SELECT語句結合WHERE子句來實現。這里有一些基本示例來展示如何進行這樣的查詢。 示例1: 檢查單個字段是否為空 假設你有一個表employees…

虛幻基礎:動畫層接口

文章目錄 動畫層&#xff1a;動畫圖表中的函數接口&#xff1a;名字&#xff0c;沒有實現。動畫層接口&#xff1a;由動畫藍圖實現1.動畫層可直接調用實現功能2.動畫層接口必須安裝3.動畫層默認使用本身實現4.動畫層也可使用其他動畫藍圖實現&#xff0c;但必須在角色藍圖中關聯…

HarmonyOS學習第18天:多媒體功能全解析

一、開篇引入 在當今數字化時代&#xff0c;多媒體已經深度融入我們的日常生活。無論是在工作中通過視頻會議進行溝通協作&#xff0c;還是在學習時借助在線課程的音頻講解加深理解&#xff0c;亦或是在休閑時光用手機播放音樂放松身心、觀看視頻打發時間&#xff0c;多媒體功…

緒論數據結構基本概念(刷題筆記)

&#xff08;一&#xff09;單選題 1.與數據元素本身的形式、相對位置和個數無關的是&#xff08;B&#xff09;【廣東工業大學2019年829數據結構】 A.數據存儲結構 B.數據邏輯結構 C.算法 D.操作 2.在數據結構的討論中把數據結構從邏輯上分為&#xff08;C&#xff09;【中國…

GPTQ - 生成式預訓練 Transformer 的精確訓練后壓縮

GPTQ - 生成式預訓練 Transformer 的精確訓練后壓縮 flyfish 曾經是 https://github.com/AutoGPTQ/AutoGPTQ 現在是https://github.com/ModelCloud/GPTQModel 對應論文是 《Accurate Post-Training Quantization for Generative Pre-trained Transformers》 生成式預訓練Tr…

git的使用方法

文章目錄 前言git簡介GIT的基本操作克隆倉庫 (Clone)獲取最新代碼 (Pull)提交代碼到遠程倉庫查看當前分支查看提交代碼的日志git config 配置用戶信息 GIT的實操 前言 git是一種軟件版本管理工具&#xff0c;在多人團隊軟件開發中地方非常重要。 類似與SVN&#xff0c;git工具…

php虛擬站點提示No input file specified時的問題及權限處理方法

訪問站點&#xff0c;提示如下 No input file specified. 可能是文件權限有問題&#xff0c;也可能是“.user.ini”文件路徑沒有配置對&#xff0c;最簡單的辦法就是直接將它刪除掉&#xff0c;還有就是將它設置正確 #配置成自己服務器上正確的路徑 open_basedir/mnt/qiy/te…