Spring接收前端传递数据的方式

 搭建项目

 

 

 

              然后点击下一步完成即可搭建成功

        在pom文件中导入lombok的jar包,帮助我们快速创建实体类

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version> 
        </dependency>

创建实体类User和Cat

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer id;
    private String name;
    private String word;
    private Cat cat;
    private List<Cat> cats;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cat {
    private Integer id;
    private String breed;
    private String name;
}

传递非JSON格式的数据

主键:

        @RequestParam 主要用于在Spring MVC后台控制层获取参数,它有三个常用参数  

               1).  defaultValue 表示设置默认值

               2). required 表示该参数是否必传

               3). value 值表示接收传入的参数的key        

        @PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出URL模板中的变量作为参数

        1.前端请求参数的key需和后端控制层处理请求的方法参数名称一致

  @RequestMapping("get1")
    public void get(String name,String word){
        System.out.println(name+":"+word);
    }

         2.前端请求参数的key需和后端控制层处理请求的方法参数名称不一致

 @RequestMapping("get2")
    public void get2(@RequestParam("n") String name,@RequestParam("w") String word){
        System.out.println(name+":"+word);
    }

         3.前端请求参数的key和后端控制层处理请求方法的参数pojo实体类的属性名称一致

@RequestMapping("get3")
    public void get3(User user){
        System.out.println(user);
    }

        4.使用@PathVariable注解将请求URL中的模板变量映射到功能 处理方法的参数上,如果模板变量名称和方法的参数名称不同需要在@PathVariable注解上显示的指定映射关系

  @RequestMapping("get4/{name}/{word}")
    public void get4(@PathVariable("name") String name,@PathVariable("word") String word){
        System.out.println(name+""+word);
    }

 

        5.通过HttpServletRequest对象获取数据,前端请求参数的key需和getParameter(String name)方法传递的参数名称一致

    @RequestMapping("get5")
    public void get5(HttpServletRequest request){
        String id = request.getParameter("id");
        String name = request.getParameter("name");
        String word = request.getParameter("word");
        System.out.println(id+""+name+""+word);
    }

传递JSON格式的数据

        如果前端通过application/json类型提交JSON格式的数据给后端控制层处理请求的方法,方法的参数必须使用@RequestBody注解进行修饰,才能接收来自前端提交的JSON数据

    @RequestMapping("get6")
    public void get6(@RequestBody User user){
        System.out.println(user);
    }

                1.单个实体接收参数

                前端传递的json的数据:

{
    "id":1003,
    "name":"小元",
    "word":"123"
}

                2. 实体嵌套实体接收参数

                前端传递的json的数据:

{
    "id":1,
    "name":"张三",
    "word":123,
    "cat":{
        "id":1001,
        "breed":"小白",
        "name":"白白"
    }
}

 

                3. 实体嵌套List集合接收参数

                前端传递的json的数据:

{
    "id":1,
    "name":"张三",
    "word":123,
    "cat":{
        "id":1001,
        "breed":"小白",
        "name":"白白"
    },
    "cats":[
       {
        "id":1002,
        "breed":"小黑",
        "name":"黑黑"
    },
      {
        "id":1003,
        "breed":"小启",
        "name":"启启"
    },
       {
        "id":1004,
        "breed":"小蓝",
        "name":"蓝蓝"
    }
    ]
}

 

                4. Map集合接收参数

 @RequestMapping("get7")
    public void add10(@RequestBody Map<String,Object> m){//传递List类型的集合数据
        Integer id = (Integer) m.get("id");
        String name = (String) m.get("name");
        String word = (String) m.get("word");

        System.out.println(id+"\t"+name+":"+word);


        System.out.println("========");
        Map<String,Object> cat = (Map<String, Object>) m.get("cat");
        Set<String> s = cat.keySet();
        for (String s1 : s) {
            System.out.println(s1+":"+ cat.get(s1));
        }


        System.out.println("========");

        List< Map<String,Object>> course = (List<Map<String, Object>>) m.get("cats");

        for (Map<String, Object> cs : course) {
            Set<Map.Entry<String, Object>> e = cs.entrySet();
            for (Map.Entry<String, Object> ss : e) {
                System.out.println(ss.getKey()+":"+ss.getValue());
            }

        }

    }

                前端传递的json的数据:

{
    "id":1,
    "name":"张三",
    "word":"123",
    "cat":{
        "id":1001,
        "breed":"小白",
        "name":"白白"
    },
    "cats":[
       {
        "id":1002,
        "breed":"小黑",
        "name":"黑黑"
    },
      {
        "id":1003,
        "breed":"小启",
        "name":"启启"
    },
       {
        "id":1004,
        "breed":"小蓝",
        "name":"蓝蓝"
    }
    ]
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外包软件定制开发中质量控制

引言 在外包软件定制开发项目中&#xff0c;确保交付的软件质量符合预期是至关重要的。由于外包团队通常是独立于企业的&#xff0c;他们可能没有对企业的业务需求和标准有深入的了解。因此&#xff0c;质量控制成为一个重要的挑战。本文将探讨外包软件定制开发中常见的质量控…

ubuntu安装单个redis服务

1.apt-get install redis-server 使用lighthouse用户这样操作会报与权限有关的错误&#xff0c; 改成使用root账号操作 2.安装完成后&#xff0c;Redis服务器会自动启动&#xff0c;查看进程是否正常启动 ps -axu|grep redis redis 18689 0.1 0.4 40136 6860 ? …

【深度学习】受限玻尔兹曼机 (RBM) 初学者指南

一、说明 受限玻尔兹曼机&#xff08;Restricted Boltzmann Machine&#xff0c;RBM&#xff09;是一种基于能量模型的人工神经网络。它只有一个隐层&#xff0c;将输入层和隐层中的每个神经元互相连接&#xff0c;但不同层的神经元之间没有连接。RBM是一种无向的概率图模型&am…

解决win11系统下vivado使用RTL分析闪退、小蓝熊easy anti chat无法启动问题

最近在接触使用vivado时被这个软件庞大的包体和繁多的报错搞得焦头烂额&#xff0c;经过多次尝试&#xff0c;我解决了两个困扰我许久的关乎软件正常使用的问题&#xff0c;将解决办法分享给大家。 一.RTL analysis运行闪退 这个问题关系到程序的正常使用&#xff0c;主要发生…

9.带你入门matlab假设检验(matlab程序)

1.简述 函数 ztest 格式 h ztest(x,m,sigma) % x为正态总体的样本&#xff0c;m为均值μ0&#xff0c;sigma为标准差&#xff0c;显著性水平为0.05(默认值) h ztest(x,m,sigma,alpha) %显著性水平为alpha [h,sig,ci,zval] ztest(x,m,sigma,alpha,tail) %sig为观察…

Pytorch深度强化学习1-3:策略评估与贝尔曼期望方程详细推导

目录 0 专栏介绍1 从一个例子出发2 回报与奖赏3 策略评估函数4 贝尔曼期望方程5 收敛性证明 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#xff0c;辅…

油猴脚本-Bilibili剧场模式仿Youtube

对比某个不存在的视频网站&#xff08;YouTube&#xff09;&#xff0c;以及B站的播放模式&#xff0c;普通模式以及网页全屏之间都有一个“中间档”&#xff0c;油管的叫 剧场模式&#xff0c;B站的叫 宽屏模式。 剧场模式 宽屏模式 相比之下&#xff0c;还是更喜欢油管的剧…

高并发的哲学原理(六)-- 拆分网络单点(下):SDN 如何替代百万人民币的负载均衡硬件

上一篇文章的末尾&#xff0c;我们利用负载均衡器打造了一个五万 QPS 的系统&#xff0c;本篇文章我们就来了解一下负载均衡技术的发展历程&#xff0c;并一起用 SDN&#xff08;软件定义网络&#xff09;技术打造出一个能够扛住 200Gbps 的负载均衡集群。 负载均衡发展史 F5 …

网络协议与攻击模拟-17-DNS协议-报文格式

二、DNS 查询 客户机想要访问www.baidu.com&#xff0c;根据自己的 TCP / IP 参数&#xff0c;向自己的首选 DNS 服务器发送 DNS 请求 首选 DNS 收到客户机的请求后&#xff0c;会去查询自己的区域文件&#xff0c;找不到www.baidu.com的 IP 地址信息&#xff08;将请求转发到…

【论文阅读】TransCAM: Transformer Attention-based CAM Refinement for WSSS

分享一篇阅读的用于弱监督分割的论文 论文标题&#xff1a; TransCAM: Transformer Attention-based CAM Refinement for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/liruiwen/TransCAM Abstract 大多数现有…

mybatis双重foreach实现遍历map中的两个list数组

文章目录 实现背景&#xff1a;前端传值的格式Debug断点调试java如何解析json对象第一步 JSONArray.fromObject()第二步 遍历jsonArray第三步 mybatis双重foreach foreach标签说明最终效果 实现背景&#xff1a; 前端传值时可能会有多个字段传递过来&#xff0c;需要后台将这多…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

《银行法律法规》三、银行管理——2、公司治理、 内部控制与合规管理

第二章 公司治理、 内部控制与合规管理 第一节 公司治理 考点1 银行公司治理概述★★ 商业银行公司治理是指股东大会、 董事会、 监事会、 高级管理层、 股东及其他利益相关者之间的相互关系&#xff0c; 包括组织架构、 职责边界、 履职要求等治理制衡机制&#xff0c; 以…

【原生HTML+SpringBoot】电子病历编辑器源码

一、简介 本系统主要面向医院医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#x…

【hadoop】部署hadoop的本地模式

hadoop的本地模式 本地模式的特点部署本地模式测试本地模式是否部署完成 本地模式的特点 没有HDFS、也没有Yarn只能测试MapReduce程序&#xff0c;作为一个普通的Java程序处理的数据是本地Linux的文件一般用于开发和测试 部署本地模式 进入该路径 /root/training/hadoop-2.7…

Ceres Solver简介及使用

Ceres Solver是一个开源的C库&#xff0c;用于建模和解决大型、复杂的优化问题。它是一个成熟、功能丰富且高性能的库&#xff0c;自2010年以来一直在Google生产中使用。最新发布版本为2.1.0,license为BSD,它支持在Windows、Linux、Mac、Android、iOS上编译&#xff0c;源码地址…

TortoiseGit的安装和使用

1、TortoiseGit的下载安装 安装说明:因为TortoiseGit 只是一个程序壳,必须依赖一个 Git Core,所以安装前请确定已完成git安装和配置。 TortoiseGit下载地址 https://download.tortoisegit.org/tgit/ ,最新稳定版本2.11.0.0。 点进去下载程序包和语言包(非必须),安装时…

在 3ds Max 中使用Mental Ray渲染 wip 图像

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 本教程面向初学者&#xff0c;每个步骤都详细概述和显示。如果您是 3D Studio MAX 的新手&#xff0c;您可能想先尝试我们的其他一些教程。 使用默认的 3D Studio MAX 渲染器创建粘土渲染 步骤 1 在 3D S…

实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护

文章目录 前言知识积累流量控制负载保护熔断降级官方文档 实战演练部署sentinel-dashboard直接jar包部署docker-compose编排 springboot集成sentinel基础架构搭建sentinel控制台sentinel验证 延伸&#xff1a;系统自适应限流系统规则原理配置页面 写在最后 前言 前面的文章我们…

Flutter:架构概览

概览 Flutter本质上是一个跨平台的UI工具集&#xff0c;允许在各自操作系统上复用同样的代码。 尽可能提供原生体验的高性能和复用代码。 开发中&#xff0c;Flutter应用在一个VM上运行&#xff0c;使得可在保留状态且无需重新编译情况下&#xff0c;进行热加载。 发行时&…