【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.mzph.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…