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":"蓝蓝"}]
}

 

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

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

相关文章

《C语言初阶篇》循环语句还没搞懂?这篇文章带你轻松学会循环语句!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《快速入门C语言》《C语言初阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言&#x1f4ac; 循环语句的介绍&#x1f4ac; while 语句的介绍&#x1f4ad; while中的break&#x1f4ad;…

css 字体间距 设置

一、css word-spacing属性设置字间距&#xff08;单词的间距&#xff09; word-spacing 属性增加或减少单词间的空白&#xff08;即字间隔&#xff09;&#xff1b;在这个属性中&#xff0c;“字” 定义为由空白符包围的一个字符串。也就是说该属性是以空格为基准进行调节间距…

ProtoBuf的学习并且制作了一个网络通讯录项目

Linux环境下载安装ProtoBuf编译器 1. 安装依赖库 Ubuntu用户选择 sudo apt-get install autoconf automake libtool curl make g unzip -yCentos用户选择 sudo yum install -y autoconf automake libtool curl make gcc-c unzip2. 下载ProtoBuf编译器 Github地址&#xff…

力扣 53. 最大子数组和

题目来源&#xff1a;https://leetcode.cn/problems/maximum-subarray/description/ C题解&#xff08;来源代码随想录&#xff09;&#xff1a;难点在于判断什么时候更新count。 是当nums[i]为正数吗&#xff1f;那要nums没有正数怎么办&#xff1b; 是当nums[i]比之前子数组…

Github Pages

官方教程&#xff1a;https://pages.github.com/ 1 创建仓库 命名为 你的名字.github.io 克隆项目 git clone https://github.com/username/username.github.io加入index.html页面 在克隆的项目中&#xff0c;加入一个index.html html文件简单写几个dom <!DOCTYPE html…

java的静态代码块

java的静态代码块用static声明&#xff0c;在类被加载的时候调用。可以包含多个静态代码块&#xff0c;按照出现的顺序执行。静态代码块可以用来对类变量初始化。 代码示例&#xff1a; package com.thb;import java.nio.channels.spi.SelectorProvider;public class Test1 {…

Linux Vim提示:E325: ATTENTION 解决方案

提示&#xff1a; 这是由于我们异常退出vim界面 程序异常关闭导致的 解决&#xff1a; 在这种情况下&#xff0c;您可以根据以下选项来解决问题&#xff1a; [O]pen Read-Only&#xff1a;以只读模式打开文件。这意味着您不能编辑文件&#xff0c;但可以查看其内容。选择此选…

Java安全——基于密码的加密

Java安全 基于密码的加密 基于密码加密和SSL加密的区别 密码加密可以数据和密码分离传输SSL只限于在套接字空间传输的数据进行加密 SSL和密码加密 密码加密是指通过算法将原始信息转换成密文&#xff0c;只有知道相应密钥的人才能解密。Java中常用的密码加密算法包括MD5、SHA、…

走进Linux世界【二、VM与Linux安装】

第二章 VM与Linux安装 1、安装VMware ​ 这里安装Vm主要是为了安装Linux系统&#xff0c;除了相对云服务器&#xff0c;比较大众化的操作&#xff0c;当然更多的是熟悉Linux操作 1、Windows安装 ​ (1) 下载链接&#xff0c;目前版本上下载VM15的版本即可https://www.vmwar…

两个分数比较大小

解决问题&#xff1a; 对于分子和分母的数据范围过大 导致化成小数进行比较大小的时候 存在精度丢失&#xff0c;不能比较的情况 为此进行算式变形推出 故采用如下自定义函数&#xff1a; ll bj(ll fz1,ll fm1,ll fz2,ll fm2){//分母相等if(fm1 fm2){return fz1-fz2;}//分…

GPT(Generative Pre-Training)论文解读及实现(一)

1 GPT Framework 1.1 Unsupervised pre-training Given an unsupervised corpus of tokens U {u1, . . . , un}, we use a standard language modeling objective to maximize the following likelihood: 在给定语料上下文环境下&#xff0c;目标时最大化下面的语言模型&…

3d Max中的Arnold渲染为黑色,这样处理!

使用Arnold渲染视图(ARV)时&#xff0c;图像保持黑色。 快照功能和常规3ds Max渲染设置可按预期生成图像。 解决方案&#xff1a; 解决方案可能需要执行下面的一项或多项操作&#xff1a; 添加光源 检查场景文件是否包含光源。如果场景中没有光源&#xff0c;渲染结果为黑色…