【SpringMVC篇】5种类型参数传递json数据传参

news2024/11/27 16:32:52

🎊专栏【SpringMVC】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🌺普通参数
  • 🌺POJO参数
  • 🌺嵌套pojo参数
  • 🌺数组参数
  • 🌺集合参数
  • 🎄json数据传参
    • 🛸json格式
    • 🛸嵌套json格式
    • 🛸集合格式

在这里插入图片描述
在Web项目开发中,如何获取客户端传来的参数是非常重要的功能。SpringMVC提供了全面灵活的请求参数绑定机制,大大简化了参数处理。

本文将全面介绍SpringMVC的参数绑定功能。我们将学习获取基本类型参数、POJO参数、数组参数、集合参数的配置方法。SpringMVC自动将请求参数映射到处理方法的入参对象上,避免了我们手动解析request的繁琐。

更强大的是,SpringMVC还提供对JSON数据的自动转换支持。我们只需使用@RequestBody注解,就可以将JSON参数解析为目标对象。这种低侵入性的处理方式,令接口开发极为顺畅。

本文还将介绍对参数转换、格式化、校验的支持,让参数绑定更加丰富。这些知识点在实战项目中都大量应用,是掌握SpringMVC的基础。下面让我们深入学习,如虎添翼!

我们继续使用上一篇文章“探索请求映射路径,Get请求与Post请求”的代码

🌺普通参数

我们在UserController类中写入这一段代码

 @RequestMapping("/commonParamDifferentname")
    @ResponseBody
    public String commonParamDifferentName(@RequestParam("name") String userName,int age){
        System.out.println("普通参数传递 userName ==> "+userName);
        System.out.println("普通参数传递 age ==> "+age);
        return "{'module':'common param different name'}";
    }

在这里插入图片描述

接收成功
在这里插入图片描述

🌺POJO参数

我们在User类中写入这一段代码

package com.example.domain;

public class User {
    private String name;
    private int age;

    private Address address;


    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                '}';
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

我们在UserController类中写入这一段代码

//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("pojo参数传递 user ==> "+user);
        return "{'module':'pojo param'}";
    }

在这里插入图片描述
运行成功
在这里插入图片描述

🌺嵌套pojo参数

适用于下面这种,可以反复写
在这里插入图片描述

我们在Address类中写入这一段代码

package com.example.domain;
public class Address {
    private String province;
    private String city;

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                '}';
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

在UserController里面写入这一段代码

  @RequestMapping("/pojoContainPojoParam")
    @ResponseBody
    public String pojoContainPojoParam(User user){
        System.out.println("pojo嵌套pojo参数传递 user ==> "+user);
        return "{'module':'pojo contain pojo param'}";
    }

继续测试
在这里插入图片描述

运行成功
在这里插入图片描述

🌺数组参数

@RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes){
        System.out.println("数组参数传递 likes ==> "+ Arrays.toString(likes));
        return "{'module':'array param'}";
    }

在这里插入图片描述

在这里插入图片描述
运行成功
在这里插入图片描述

🌺集合参数

@RequestMapping("/listParam")
    @ResponseBody
    public String listParam(@RequestParam List<String> likes){
        System.out.println("集合参数传递 likes ==> "+ likes);
        return "{'module':'list param'}";
    }

在这里插入图片描述

在这里插入图片描述
运行成功
在这里插入图片描述

🎄json数据传参

我们在SpringMvcConfig里面加入这一段代码@EnableWebMvc,开启json数据自动转换

在这里插入图片描述

🛸json格式

我们找到上面 集合参数 的代码,把@RequestParam修改为@RequestBody

   @RequestMapping("/listParamForJson")
    @ResponseBody
    public String listParamForJson(@RequestBody List<String> likes){
        System.out.println("list common(json)参数传递 list ==> "+likes);
        return "{'module':'list common for json param'}";
    }

在这里插入图片描述

这里选择json,在下面写入数据
在这里插入图片描述

发现可以运行成功
在这里插入图片描述

🛸嵌套json格式

@RequestMapping("/pojoParamForJson")
    @ResponseBody
    public String pojoParamForJson(@RequestBody User user){
        System.out.println("pojo(json)参数传递 user ==> "+user);
        return "{'module':'pojo for json param'}";
    }

在这里插入图片描述
运行成功

在这里插入图片描述

🛸集合格式

@RequestMapping("/listPojoParamForJson")
    @ResponseBody
    public String listPojoParamForJson(@RequestBody List<User> list){
        System.out.println("list pojo(json)参数传递 list ==> "+list);
        return "{'module':'list pojo for json param'}";
    }

如果报错,重启一下就好了
在这里插入图片描述

在这里插入图片描述
运行成功
在这里插入图片描述
通过本文的学习,我们已经掌握了SpringMVC中多种参数获取和绑定的方式,这将帮助我们轻松实现接口的参数传递。当然实际应用中,我们还要注意安全性、效率、规范性等方面的优化。

SpringMVC参数绑定只是冰山一角,还有数据校验、全局处理、拦截器等知识点需要继续深入学习。此外,实际项目中可能还需要处理复杂业务场景。如果各位同学有任何疑问,请在评论区与我留言讨论。持之以恒,我们一定能成为SpringMVC的掌握者!
在这里插入图片描述

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

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

相关文章

Elemen table布局错乱解决方案

示例 解决方案 方案一 <el-table ref"mainTable"></el-table>、、、// 接口请求触发重新布局方法this.$nextTick(() > {this.$refs.mainTable.doLayout();});方案二 <el-tablestyle"width: 100%;max-height:400px;overflow-y: auto;"&g…

麒麟操作系统安装oracle 19c报错问题汇总

麒麟操作系统版本: [roothis-dsg lib64]# uname -a Linux his-dsg 4.19.90-24.4.v2101.ky10.x86_64 #1 SMP Mon May 24 12:14:55 CST 2021 x86_64 x86_64 x86_64 GNU/Linux 安装之前,建议先配置好ORACLE的环境变量,再执行一下bash_profile环境变量 1.xstart无法打开报错x11拒…

使用ant design pro出现面包屑导航和标题消失的问题

前端时间&#xff0c;我用ant design pro搭建了一个后台权限管理的项目模板&#xff0c;里面用到了PageContainer组件&#xff0c;默认会显示面包屑导航和标题&#xff0c;如图所示 后来&#xff0c;我把这个项目模板用于另外一个项目的前端页面&#xff0c;把整个项目的文件夹…

【java】命令行,包

文件夹情况&#xff1a; HelloWorld.java package com.demo; public class HelloWorld{public static void print(){System.out.println("HelloWorld!");}public static void main(String[] args){print();} } import.java import com.demo.HelloWorld; public cla…

Selenium三种等待方式的使用!

UI自动化测试&#xff0c;大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中&#xff0c;经常出现元素定位不到的情况&#xff0c;究其原因&#xff0c;无非两种情况&#xff1a;1、有frame&#xff1b;2、没有设置等待。 因为代码运行速度和浏览器…

【Linux】常见的Linux命令

目录 一、与目录有关的操作 二、与文件有关的操作 三、针对目录的操作 三、在linux上搭建环境 一、与目录有关的操作 1.ls 显示目录内容列表 ls / 这里的 / 表示根目录&#xff0c;相当于windows中的此电脑&#xff0c;linux中没有盘符。 ls -l / 显示详细信息 可以…

【EI会议征稿】第四届生物信息学与智能计算国际学术研讨会(BIC 2024)

第四届生物信息学与智能计算国际学术研讨会&#xff08;BIC 2024&#xff09; 2024 4th International Conference on Bioinformatics and Intelligent Computing 2024年第四届生物信息学与智能计算国际学术研讨会 &#xff08;BIC 2024&#xff09;将定于2024年1月26-28日在…

SOLIDWORKS® 2024 新功能 - PDM

SOLIDWORKS 2024 新功能 - PDM 1、改进的视觉内容 • 通过装配体可视化功能&#xff0c;在 SOLIDWORKS 中以图形方式查看零部件数据&#xff0c;如工作流程状态。 • 使用特定图标迅速识别焊件切割清单零部件。 优点 重要数据和系统信息一目了然。 2、增强的数据保护和跟踪功…

Controllable Guide-Space for Generalizable Face Forgery Detection

一、研究背景 以往工作专注于提取伪造特征的共同特性和真假域鉴别性信息&#xff0c;以提升特征泛化性。 但在训练过程中&#xff0c;这些方法只区分真假域&#xff0c;并将不同的伪造域看作一类而不加以区分。 这会导致伪造样本进一步以伪造不相关特征&#xff08;如&#xff…

在ros中 两个摄像头

欧最后有了一个需求&#xff0c;需要在ros中接两摄像头&#xff0c;完成后写一下步骤。 以下是我的设备&#xff0c; 通过一个3.0的转接头来连接两个摄像头&#xff0c; 首先&#xff0c;通过下面的命令 ls /dev/video* //插上摄像头后打开终端查看是否检测到摄像头 我这…

职业规划:如何成为年薪80W+的Salesforce项目经理?

Salesforce项目经理负责监督各种Salesforce云和端到端Salesforce项目&#xff0c;首要任务是确保项目成功&#xff0c;并在预算范围内按时交付。Salesforce项目经理的薪资是不断增长的Salesforce经济中的热门话题。 Salesforce项目经理的职责 项目经理的职业发展更多地关注经验…

三国杀中的概率学问题2——神郭嘉

前言 四年前&#xff0c;我写过一篇博客三国杀中的概率学问题。当时有一条评论&#xff0c;让我算一算神郭嘉慧识的摸牌数。这也是我写这篇博客的动力来源。相比起四年前&#xff0c;我的数学水平渐长&#xff0c;于是想做一些更深入的数学问题。这篇文章将从更加理论的角度来…

JMeter的使用——傻瓜式学习【下】

目录 前言 1、自动录制脚本 1.1、原理 1.2、JMeter脚本录制 2、JMeter直连数据库 2.1、直连数据库的作用 2.2、JMeter直连数据库的步骤 案例&#xff1a; 3、JMeter的逻辑控制器 3.1、if控制器 案例&#xff1a; 3.2、循环控制器 案例&#xff1a; 3.3、ForEach控…

答题小程序好友PK答题模块来袭,快来一决高下!

答题小程序源码之好友pk答题怎么做 各位亲爱的答题小程序小伙伴&#xff0c;大家好&#xff01;今天我们来一起看一下答题小程序的好友PK答题怎么做&#xff0c;好友PK顾名思义即邀请微信好友进行一对一的PK答题&#xff0c;该模式的特点是有针对性的PK答题&#xff0c;比如我要…

Kafka、RabbitMQ、RocketMQ中间件的对比

消息中间件现在有不少&#xff0c;网上很多文章都对其做过对比&#xff0c;在这我对其做进一步总结与整理。 RocketMQ 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件&#xff0c;使用Mysql作为消息存储媒介&#xff0c;可完全水平扩容&#xff0c;为了进一步降低成…

敲敲云零代码平台—近期亮点功能,让开发者对零代码心动~

近期敲敲云零代码平台&#xff0c;更新了很多实用新功能&#xff0c;包括汇总组件添加了筛选条件&#xff0c;增加了汇总日期控件&#xff0c;子表添加了批量添加和默认值等等。 1. 单选/多选/下拉选择 颜色设置 效果展示 在列表和表单中可通过不同颜色显示字段的不同等级或者…

【深⼊理解指针4】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1. 回调函数是什么&#xff1f; 2. qsort使用举例 2.1测试qsort函数排序整型数组 2.2测试qsort函数排序结构体数组 3. qsort函数的模拟实现 3.1测试bubble_sort函数…

C++对象的内存分布和虚函数表

Linux C/C 开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全) c中一个类中无非有四种成员&#xff1a;静态数据成员和非静态数据成员&#xff0c;静态函数和非静态函数。 1.非静态数据成员被放在每一个对象体内作为对象专有的数据成员。 2.静态数据成员被提取出来…

Linux -------------------设置防火墙和SELinux

&#xff08;一&#xff09;防火墙概述 防火墙的概念&#xff1a;防火墙是一种非常重要的网络安全工具&#xff0c;它是网络安全的重要组成部分&#xff0c;用于保护计算机网络免受未经授权的访问、恶意攻击和数据泄漏等威胁等。 防火墙的特点 防火墙通常具备以下几个特点。 …

(免费领源码)springboot#MYSQL钓鱼交友平台小程序33506-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1课题目的与意义 1.2国内外研究现状 1.3论文结构与章节安排 1.4小程序框架以及目录结构介绍 2 Springboot钓鱼交友平台小程序系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 操作可行性分析 2.2 系统流程分析 2.2…