Spring通信传参的方法

news2024/11/27 2:18:38

Spring通信传参的方法

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.简单参数传递
      • 2.复合参数
      • 3.动态参数
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

接口传参的是一个非常常见的需求。

需求:

设计思路

在这里插入图片描述

实现思路分析

1.简单参数传递

postman 前后端联调典型接口联调总结 这篇写的Blog已经定义写了部分传参的方式,主要是基于静态的参数传递,主要包含的基本数据类型和对象数据类型的传参等。

Spring MVC支持动态参数的方式有很多种,以下是其中的一些常见方式:

  1. 路径参数(Path Parameters):可以在请求URL中使用占位符来表示参数,例如/users/{id},其中{id}就是一个路径参数。在控制器方法中可以使用@PathVariable注解来获取路径参数的值。

  2. 查询参数(Query Parameters):可以在请求URL中使用?符号后面的参数来表示查询参数,例如/users?id=1&name=John,其中idname就是查询参数。在控制器方法中可以使用@RequestParam注解来获取查询参数的值。

  3. 请求体参数(Request Body Parameters):可以通过HTTP请求的请求体中传递参数。在控制器方法中可以使用@RequestBody注解来获取请求体的参数,通常用于处理复杂的数据结构或对象。

  4. 表单参数(Form Parameters):可以通过HTTP请求的请求体中发送表单数据。在控制器方法中可以使用@RequestParam注解来获取表单参数的值,也可以使用@ModelAttribute注解来绑定表单数据到对象。

  5. 请求头参数(Request Header Parameters):可以通过HTTP请求的请求头中传递参数。在控制器方法中可以使用@RequestHeader注解来获取请求头参数的值。

这些方式可以根据实际需要灵活组合和使用,以满足不同的业务需求。

2.复合参数

复合参数是什么意思呢? 是各个数据类型是不同的,
一般的实现方案是定义一个类,添加对应的复合参数的集合去模拟参数传递即可

Spring MVC支持复合参数的方式有以下几种:

  1. 使用Java Bean作为参数:可以将多个参数封装到一个Java Bean中,然后将该Bean作为参数传递给Controller方法。在Controller方法中可以直接使用该Bean的属性来获取参数值。
public class User {
    private String name;
    private int age;
    // getters and setters
}

@RequestMapping("/user")
public String createUser(User user) {
    // 使用user对象的属性来获取参数值
    String name = user.getName();
    int age = user.getAge();
    // 其他逻辑
    return "success";
}
  1. 使用@RequestParam注解:可以在Controller方法的参数上使用@RequestParam注解来指定参数的名称,通过该注解可以将请求中的参数值赋给对应的方法参数。
@RequestMapping("/user")
public String createUser(@RequestParam("name") String name, @RequestParam("age") int age) {
    // 使用name和age参数
    // 其他逻辑
    return "success";
}
  1. 使用@PathVariable注解:如果请求的URL中包含参数,可以在Controller方法的参数上使用@PathVariable注解来获取URL中的参数值。
@RequestMapping("/user/{id}")
public String getUserById(@PathVariable("id") int id) {
    // 使用id参数
    // 其他逻辑
    return "success";
}

以上是Spring MVC中支持的几种复合参数的方式,根据具体的需求选择合适的方式来获取参数值。

3.动态参数

动态参数传递首先在JSE中我们都非常熟悉,采用的是动态参数的传递。

在Spring MVC中,动态参数通常是指在请求中传递的参数的值是动态变化的,而不是固定的。

在Spring MVC中,可以使用注解@PathVariable来获取URL中的动态参数。这个注解可以在控制器方法的参数上使用,并且指定参数的名称。例如:

@GetMapping("/users/{id}")
public String getUserById(@PathVariable("id") Long id) {
    // 根据id查询用户
    // ...
}

在这个例子中,{id}是URL中的动态参数,通过@PathVariable注解将其映射到方法的参数id上。

除了@PathVariable注解,还可以使用@RequestParam注解来获取动态参数。这个注解可以在控制器方法的参数上使用,并且指定参数的名称。例如:

@GetMapping("/users")
public String getUserByName(@RequestParam("name") String name) {
    // 根据name查询用户
    // ...
}

在这个例子中,name是请求参数中的动态参数,通过@RequestParam注解将其映射到方法的参数name上。

在Spring MVC中,还可以使用模糊匹配的方式来获取动态参数。可以使用*作为通配符,匹配任意字符。例如:

@GetMapping("/users/{id}/info")
public String getUserInfo(@PathVariable("id") Long id) {
    // 获取用户的详细信息
    // ...
}

在这个例子中,请求URL可以是/users/123/info,其中123就是动态参数,通过@PathVariable注解将其映射到方法的参数id上。

总之,Spring MVC提供了多种方式来获取请求中的动态参数,包括@PathVariable注解、@RequestParam注解和模糊匹配。根据具体的需求,可以选择合适的方式来处理动态参数。

如下说个一般性的解决方案如下:

一般地,在SpringMVC中采用的方案是可以先用Map传参试试,一般都是可以的,

最后是关于复杂数据结构模拟这块,其实就是在界面原型中,根据对应的结构性去模拟参数的形式,使用嵌套集合的方式来承载。
举个例子:
在这里插入图片描述

如上的界面动态增加的,那我我们就可以用list 来模拟,整体又是个List
所以我们的模拟方式如下:
List<List,Map> 这样的方式去承载 这种类型的数据。
所以本质上界面组织关系的模拟,最后Map来关联起来。

参考资料和推荐阅读

参考资料
官方文档
开源社区
博客文章
书籍推荐
1.https://blog.csdn.net/xiamaocheng/article/details/119442114

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!同时,期望各位大佬的批评指正~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1349385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫基础一(持续更新)

爬虫概念&#xff1a; 通过编写程序&#xff0c;模拟浏览器上网&#xff0c;然后让其去互联网上抓取数据的过程 分类&#xff1a; 1&#xff0c;通用爬虫&#xff1a;抓取一整张页面数据 2&#xff0c;聚焦爬虫&#xff1a;抓取页面中的局部内容 3&#xff0c;增量式爬虫&…

消息中间件常见知识点

一&#xff1a;消息队列的主要作用是什么&#xff1f; 1.消息队列的特性&#xff1a; 业务无关&#xff0c;一个具有普适性质的消息队列组件不需要考虑上层的业务模型&#xff0c;只做好消息的分发就可以了&#xff0c;上层业务的不同模块反而需要依赖消息队列所定义的规范进行…

JVM篇:JVM的简介

JVM简介 JVM全称为Java Virtual Machine&#xff0c;翻译过来就是java虚拟机&#xff0c;Java程序&#xff08;Java二进制字节码&#xff09;的运行环境 JVM的优点&#xff1a; Java最大的一个优点是&#xff0c;一次编写&#xff0c;到处运行。之所以能够实现这个功能就是依…

go语言语法基础

文章目录 前言一、输入和输出常用的字符串格式化符号 二、注释三、Go常用基本语言数据类型数字类型布尔类型字符类型变量与常量数组和切片数组切片 map类型创建map增删改查特别提醒 指针 四、运算符五、条件判断语句if系列switch六、循环语句for循环标准写法死循环while循环do …

java设计模式学习之【观察者模式】

文章目录 引言观察者模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用观察者示例代码地址 引言 想象你在一个在线拍卖会上竞标一件珍贵的艺术品。每当有人出价更高&#xff0c;系统都会立即通知你。这个实时更新机制使你可以做出快速反应。这种模式&#x…

Linux之进程管理

什么是进程 在linux中每个执行的程序都称为一个进程&#xff0c;每个进程都分配一个ID号&#xff08;pid进程号&#xff09;。每个进程都可能以两种方式存在&#xff0c;即前台和后天。前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作&#xff0c;但屏幕…

hugo-theme-kiwi V0.0.2 博客主题上新了时间轴

至此佳节&#xff0c;我在此给正在屏幕前浏览本文的您和您的家人&#xff0c;恭祝元旦快乐&#xff0c;虽然&#xff0c;这声祝福是晚了&#xff0c;但却不妨碍我我由内心深处对您和您的家人的诚挚祝福&#xff01; 新的一年&#xff0c;从这一天逐渐步入我们的生活&#xff0c…

web等保评测需要实机查看的操作系统、服务器、数据库和应用部分

“等保测评”全称是信息安全等级保护测评。是经公安部认证的具有资质的测评机构&#xff0c;依据国家信息安全等级保护规范规定&#xff0c;受有关单位委托&#xff0c;按照有关管理规范和技术标准&#xff0c;对信息系统安全等级保护状况进行检测评估的活动。 本文陆续将遇到的…

『番外篇九』SwiftUI 实战:打造一款“五脏俱全”的网络图片显示 App(上)

概览 俗话说得好:“读书破万卷,下笔如有神”。不过如果把这句话放到编程的学习上可就不那么贴切了。 要想熟练掌握一门编程语言,光看书是绝对不够的。我们还需尽可能的多撸码、早撸码,撸到无路可退、海枯石烂才有可能一窥门径。 在本篇和续篇博文中,我们将和小伙伴们一起…

手把手教你绘制和解读实用R列线图(Nomogram):从入门到精通

一、引言 列线图&#xff08;Nomogram&#xff09;是一种常用的数据可视化工具&#xff0c;它能够直观地展示多个变量之间的关系&#xff0c;并帮助我们理解和解释复杂的数据模式。通过绘制列线图&#xff0c;我们可以将各种变量的影响和相互关联转化为图形化的表示&#xff0c…

2001-2021年各省高速公路里程数据

2001-2021年全国及各省高速公路里程数据 1、时间&#xff1a;2001-2021年 2、指标&#xff1a;高速公路里程 3、范围&#xff1a;全国及30个省市 &#xff08;不含西藏&#xff09; 4、来源&#xff1a;各省NJ、省TJGB、第三产业TJNJ &#xff08;无缺失&#xff09; 5、指…

鸿蒙项目方舟框架(ArkUI)之线性布局容器Stack组件

鸿蒙项目方舟框架&#xff08;ArkUI&#xff09;之线性布局容器Stack组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Stack组件 堆叠容器&#xff0c;子组件按照顺序依次入栈&#xff0c;后一个子组件覆盖前一个子组件。 …

docker Mysql-udf-http

1.Mysql-udf-http镜像已上传到dockerhub中 docker pull heidaodageshiwo/mysql-udf-http:v1 2.启动镜像(默认密码root1234) docker run -tid -p 3306:3306 --namemysql-udf-http --privilegedtrue heidaodageshiwo/mysql-udf-http:v1 3.命令 [rootlocalhost ~]# docker im…

Navisworks各版本安装指南

Navisworks 下载链接 https://pan.baidu.com/s/1DGD9TbSa6Xjd-HoySd5AYg?pwd0531 1.鼠标右击【Navisworks2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Navisworks2024(64bit)】。 2.打开解压后的文件夹&#xff0c;双击打…

大甩卖-(CWRU)轴承故障诊数据集和代码全家桶

Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 Python轴承故障诊断 (一)短时傅里叶变换STFT Python轴承故障诊断 (二)连续小波变换CWT_pyts 小波变换 故障-CSDN博客 Python轴承故障诊断 (三)经验模态分解EMD_轴承诊断 pytorch-CSDN博客 Pytorch…

大数据规模存储的几个核心问题

文章目录 三个关键问题RAID&#xff08;独立磁盘冗余阵列&#xff09;RAID是如何解决关于存储的三个关键问题&#xff1f;水平伸缩 大规模数据存储都需要解决几个核心问题&#xff0c;这些问题都是什么呢&#xff1f; 三个关键问题 1.数据存储容量的问题 既然大数据要解决的…

ROS TF坐标变换 - TF树

目录 一、TF树介绍二、TF2与TF三、构建TF树四、rviz查看TF坐标关系 一、TF树介绍 在机器人系统中&#xff0c;存在运动学模型和动力学模型。对于刚体机器人&#xff0c;动力学模型基于刚体动力学&#xff0c;代表机器人系统在运动过程中力/力矩与其运动状态的变化关系。而运动…

(五)分文件编程

文章目录 为什么要引入分文件编程.C文件怎么添加.H文件怎么书写以及如何进行链接.H书写格式&#xff1a;“有头有尾标识符”例如&#xff08;timer.h) .H链接链接到头文件所在路径的文件夹路径即可 提供一个分文件编程的一种代码最后附上视频演示 为什么要引入分文件编程 C程序…

Linux基础知识学习2

tree命令的使用 可以看到dir2目录下的这些文件&#xff0c;要想显示dir2的具体结构&#xff0c;可用tree命令 mv命令 它可以实现两个功能 1.将文件移动到另一个目录中 2.对某一个文件进行重命名 1.将文件移动到另一个目录中 这里将dir1中的2.txt移动到他的子目录dir3中 执行…

【linux】cat的基本使用

cat是一个常用的命令&#xff0c;用来显示文本的内容&#xff0c;合并和创建文本文件 类似命令还有显示文件开头的内容&#xff1a; 【linux】head的用法 输出文件开头的内容-CSDN博客 显示文件末尾的内容&#xff1a; 【linux】tail的基本使用-CSDN博客 当我们想到了想要…