Spring通信传参的方法

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.mzph.cn/news/591274.shtml

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

相关文章

HarmonyOS UI框架简介

HarmonyOS UI框架介绍 HarmonyOSUI框架是一个用于构建跨设备应用的开发框架&#xff0c;它属于HarmonyOS系统架构的上层框架。该框架通过提供一系列的开发模型、声明式UI范式、系统API等&#xff0c;帮助开发者更高效地构建用户界面。 在HarmonyOSUI框架中&#xff0c;开发语…

C#中字母与ASCⅡ码的转换

目录 一、关于ASCⅡ及与字符互转 1.主要用到Encoding对象的GetBytes方法 2.Char显式转换为数值类型得到ASCⅡ 二、实例 三、生成效果 四、程序中的一些知识点 1.IsLetterOrDigit() 2.GetBytes() 3.TryParse(string, out int) 一、关于ASCⅡ及与字符互转 ASCⅡ(Americ…

.net8时代,微软.net开发策略,F#不就是VB语言吗?

看了一下F#代码几乎和VB差不多&#xff0c;重复造轮子微软却玩的很开心。 可是真正的VB6,vb.net却抛弃了 .网络管理语言策略。NET微软学习https://learn.microsoft.com/en-us/dotnet/fundamentals/languages 微软提供三种语言。网络平台-C#,F#和视觉基础.在本文中,您将了解我…

计算机网络的接口

计算机网络接口是计算机与网络通信设备之间进行通信的重要部分&#xff0c;它提供了计算机连接到网络的物理和逻辑接口&#xff0c;是计算机进行网络通信的重要组成部分。本文将介绍计算机网络接口的基本概念&#xff0c;不同类型的网络接口及其特点&#xff0c;以及在实际应用…

KBDNO1.DLL文件缺失,软件或游戏无法启动运行,怎样快速修复

不少小伙伴&#xff0c;求助电脑报错“KBDNO1.DLL文件缺失&#xff0c;软件或游戏无法启动或运行”&#xff0c;应该怎么办&#xff1f; 首先&#xff0c;我们先来了解“KBDNO1.DLL文件”是什么&#xff1f; KBDNO1.DLL是Windows操作系统中的一个动态链接库文件&#xff0c;主…

连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver‘,亲测有效!!!

Jmeter连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver’ 1.到官方下载驱动注意&#xff1a;根据项目的JDK版本来下载对应的驱动Download | pgJDBC 2.将postgresql-42.2.27.jar复制到lib目录下面&#xff0c; 然后重新启动 连接driver信息如下&#…

【LeetCode:69. x 的平方根 | 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

印尼小胖子表情包大全

印尼小胖子tatan表情包大全 想要更多表情包&#xff0c;访问cmay表情包大全

二叉树的前序遍历 、二叉树的最大深度、平衡二叉树、二叉树遍历(leetcode)

目录 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 方法二&#xff1a;传址调用记录节点个数 二、二叉树的最大深度 三、平衡二叉树 四、二叉树遍历 一、二叉树的前序遍历 方法一&#xff1a;全局变量记录节点个数 计算树的节点数: 函数TreeSize用于递…

java基础-回忆性记录3

运算符 算数运算符 运算符对常量或者变量进行操作的符号。 运算符吧常量或者变量连接起来符合java语法的式子可以称为表达式。 不同运算符连接表达式体现是不同类型。 符号作用说明加-减*乘/除%取余获取的是两个数据做除法的余数 注意&#xff1a; /和%的区别&#xff1a…

机器视觉在医学影像与医疗领域的应用及前景

引言 随着人工智能技术的飞速发展&#xff0c;机器视觉在医学影像和医疗领域中扮演着越来越重要的角色。机器视觉技术如何在医院领域提高诊断准确性、加快治疗流程以及改善患者体验。本文将探讨机器视觉算法的重要性、使用场景&#xff0c;并对其在医院领域应用的前景提出个人见…

Linux mdu命令教程:如何有效地使用mdu命令(附实例教程和注意事项)

Linux mdu命令介绍 mdu命令是Linux系统中的一个命令&#xff0c;全称为My Disk Usage&#xff0c;它用于显示目录或文件所占用的磁盘空间。 Linux mdu命令适用的Linux版本 mdu命令在大多数Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu, Debian, Fedora, CentOS等…

【PHP】获取 URL 中域名后的路径

目录 1.指定的url 2.当前请求的url 1.指定的url 如果您想从指定的 URL 中获取域名后的路径&#xff0c;可以使用 PHP 的 parse_url() 函数。以下是一个示例&#xff0c;展示了如何从指定的 URL 中获取域名后的路径&#xff1a; <?php$url https://example.com/path/to/r…

第83讲:MySQL数据库备份工具及备份策略的核心概念

文章目录 1. MySQL数据库库数据备份的理念2.MySQL数据库备份工具介绍3.逻辑备份与物理备份的比较4.数据库的备份策略 1. MySQL数据库库数据备份的理念 数据备份是作为运维来说必不可少的一个环节&#xff0c;无论是数据库数据、程序中间件都需要定期备份。 在进行备份之前首先…

计算机毕业设计-----SSM场地预订管理系统

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 按分类查看场地,用户登录,查看网站公告,按分类查看器材,查看商品详情,加入购物车,提交订单,查看订单,修改个人信息等功能。 管理员角…

分布式【Zookeeper】

1.1 ZooKeeper 是什么 ZooKeeper 是 Apache 的顶级项目。ZooKeeper 为分布式应用提供了高效且可靠的分布式协调服务&#xff0c;提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面&#xff0c;ZooKeeper 并没有直接采用 Paxos 算法&…

爬虫工作量由小到大的思维转变---<第三十四章 Scrapy 的部署scrapyd+Gerapy>

前言: scrapy-redis没被部署,感觉讲起来很无力;因为实在编不出一个能让scrapy-redis发挥用武之地的案子;所以,索性直接先把分布式爬虫的部署问题给讲清楚!! 然后,曲线救国式地再在部署的服务器上,讲scrapy redis我感觉这样才好! 正文: 现在还有不少人在用scrapy web进行爬虫管…

【深入探索Python库】操作系统功能的接口OS库(2)

系列文章目录 深入探索Python库之操作系统功能的接口OS库&#xff08;1&#xff09; 深入探索Python库之操作系统功能的接口OS库&#xff08;2&#xff09; 文章目录 系列文章目录引言系统信息进程管理结论 引言 前篇文章介绍了python库中os库的核心用途&#xff0c;包括文件…

2024,启动(回顾我的2023)

零.前言 打开博客想写个年度总结&#xff0c;发现已经半年没有更新文章了&#xff0c;排名从几千掉到了几万&#xff0c;不过数据量还是不错的。 时间过得可真快&#xff0c;2023年是充满动荡的一年&#xff0c;上半年gpt横空出世&#xff0c;下半年各种翻车暴雷吃瓜吃到嘴软…

系统编程--VIM

这里写目录标题 vim三种工作模式进入文本模式的快捷键在命令模式下进行文本编辑 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 vim 三种工作模式 具体可见第二章对vim的详细介绍 …