SpringMVC数据传递总结

news2024/11/25 18:57:17

文章目录

    • 1. 分析总结
    • 2. 普通格式数据
      • 2.1 普通参数
      • 2.2 pojo参数
      • 2.3 嵌套pojo参数
      • 2.4 数组 -- 普通参数
      • 2.5 集合 -- 普通参数
      • 2.6 web容器添加过滤器指定字符集
    • 3. JSON格式数据
      • 3.1 相关准备
      • 3.2 json数组(基本)
      • 3.3 json对象(pojo)
      • 3.4 json数组(pojo)

1. 分析总结

 1.1 普通格式数据处理总结:
 a. 注入数据时需要保证前端传递的参数名称和后端接收方法形参名称需要对应
 b. 对于名称不对应借用@RequestParam进行映射对应
 c. 对于集合类需要使用@RequestParam进行声明

 @RequstMapping可以对get和post请求同时处理,get只接收请求行数据,post会同时接收请求行与请求体当中的数据

 1.2 Json格式数据处理:
 a. 前期准备:jar包导入 + 注解开启
 b. 支持get和post请求
 c. 必须加上@RequestBody注解(使用请求体进行参数传递)

2. 普通格式数据

2.1 普通参数

 @RequestMapping可以处理get和post请求,默认参数名称需要对应,若不对应则需要使用@RequestParam进行参数绑定
  请求参数格式(参数在请求体和请求行当中都设置分析):
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {
	// 普通参数 -- get请求(只会接收请求行当中参数)
	@RequestMapping("/getCommonParam")
	public String getCommonParam(String username, String password){
		System.out.println("=========================================");
		System.out.println("普通参数 -- get请求(只会接收请求行当中参数)");
		System.out.println("username => " + username);
		System.out.println("password => " + password);
		return "Get请求成功接收普通参数传递";
	}

	// 普通参数 -- post请求(会同时接收请求行与请求头当中数据, 建议数据规范写入到请求头当中)
	@RequestMapping("/postCommonParam")
	public String postCommonParam(String username, String password){
		System.out.println("=========================================");
		System.out.println("普通参数 -- post请求(会同时接收请求行与请求体当中数据, 建议数据规范写入到请求体当中)");
		System.out.println("username => " + username);
		System.out.println("password => " + password);
		return "Post请求成功接收普通参数传递";
	}

	// 使用@RequestParam 可以解决请求参数与方法形参名字不对应问题
	@RequestMapping("/solveDifferentName")
	public String solveDifferentName(@RequestParam("username") String name, String password){
		System.out.println("=========================================");
		System.out.println("使用@RequestParam 可以解决参数名字不对应的问题");
		System.out.println("name => " + name);
		System.out.println("password => " + password);
		return "请求成功解决参数名称不对应";
	}
}

 数据结果:
在这里插入图片描述

2.2 pojo参数

 @RequestMapping可以处理get和post请求,默认参数名称和属性名需要对应
  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码:

package com.controller;

public class User {
	String password;
	String username;
	String s;

	public String getPassword() { return password; }
	public void setPassword(String password) { this.password = password; }
	public String getUsername() { return username; }
	public void setUsername(String username) { this.username = username; }
	public String getS() { return s; }
	public void setS(String s) { this.s = s; }

	@Override
	public String toString() {
		return "User{" +
				"password='" + password + '\'' +
				", username='" + username + '\'' +
				", s='" + s + '\'' +
				'}';
	}
}

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {

	@RequestMapping("/getPojo")
	public String getCommonParam(User user){
		System.out.println("=========================================");
		System.out.println("pojo参数 -- get请求(参数需要与pojo当中属性名称对应)(只接收请求行)");
		System.out.println("user => " + user);
		return "Successful";
	}

	@RequestMapping("/postPojo")
	public String postCommonParam(User user){
		System.out.println("=========================================");
		System.out.println("pojo参数 -- post请求(参数需要与pojo当中属性名称对应)(接收请求行与请求体)");
		System.out.println("user => " + user);
		return "Successful";
	}

}

 数据结果:
在这里插入图片描述

2.3 嵌套pojo参数

 此问题的关键就是需要在前端传递参数的时候同时需要请求参数名与对象属性名相同,再按照对象层次关系进行接收

package com.controller;
class Address{
	private int id;
	private String name;
	/*
	此处省略get/set/toString()方法
	 */
}
public class User {
	String password;
	String username;
	private Address address;
	/*
	此处省略get/set/toString()方法
	 */
}

在这里插入图片描述

2.4 数组 – 普通参数

 @RequestMapping可以处理get和post请求,请求参数名称和形参需要对应,对应内容可以成功注入。与之前类似若请求为post,但是在请求体当中也写入了数据,post请求会将这两部分数据全部接收

  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

@RestController
public class BookControllerTest {

	@RequestMapping("/getArray")
	public String getArray(String username[]){
		System.out.println("=========================================");
		System.out.println("get方式 -- 数组 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + Arrays.toString(username));
		return "Successful";
	}

	@RequestMapping("/postArray")
	public String postArray(String username[]){
		System.out.println("=========================================");
		System.out.println("post方式 -- 数组 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + Arrays.toString(username));
		return "Successful";
	}
}

 数据结果:
在这里插入图片描述

2.5 集合 – 普通参数

 这里需要注意,需要使用@RequestParam将参数进行绑定,因为其默认操作会首先进行创建对象,再将值放入对象的属性当中,而List是接口,需要使用@RequstParam进行声明将值直接放入到LIst集合当中
在这里插入图片描述

  请求参数格式(参数在请求体和请求行当中都进行设置):
在这里插入图片描述

 Java表现层代码

package com.controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
public class BookControllerTest {

	@RequestMapping("/getList")
	public String getList(@RequestParam List<String> username){
		System.out.println("=========================================");
		System.out.println("get方式 -- List集合 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入");
		System.out.println("username =>" + username);
		return "Successful";
	}

	@RequestMapping("/postList")
	public String postList(@RequestParam List<String> username){
		System.out.println("=========================================");
		System.out.println("post方式 -- List集合 -- 普通参数: 保证请求参数与方法形参名字对应即可成功注入(处理请求体与请求行)");
		System.out.println("username =>" + username);
		return "Successful";
	}
}

 数据结果
在这里插入图片描述

2.6 web容器添加过滤器指定字符集

在这里插入图片描述

3. JSON格式数据

3.1 相关准备

  jackson数据转换jar包(Maven依赖)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

  核心注解: @EnableMvc开启Json数据转换支持
在这里插入图片描述

3.2 json数组(基本)

 Json数据传递使用get或者post请求都可以,因为信息设置在请求体当中所以对于所有Json数据的传递都需要加上@RequestBody注解
 Postman请求格式:
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
public class BookControllerTest {

	@RequestMapping("/getJson")
	public void getJson(@RequestBody List<String> username){
		System.out.println("============================");
		System.out.println("Json数据可以使用get传递.....");
		System.out.println(username);
	}

	@PostMapping("/postJson")
	public void postJson(@RequestBody List<String> username){
		System.out.println("===========================");
		System.out.println("Json数据可以使用post传递.....");
		System.out.println(username);
	}

}

 数据结果:
在这里插入图片描述

3.3 json对象(pojo)

 关键:使用@RequestBody注解(参数名称和属性对应)
 Postman请求格式:
在这里插入图片描述
 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

@RestController
public class BookControllerTest {

	@RequestMapping("/getJsonPojo")
	public void getJsonPojo(@RequestBody User user){
		System.out.println("============================");
		System.out.println("Json对象(pojo)成功传递.....");
		System.out.println(user);
	}
}

 数据结果:
在这里插入图片描述

3.4 json数组(pojo)

 关键:使用@RequestBody注解(参数名称和属性对应)
 Postman请求格式:
在这里插入图片描述

 Java表现层代码:

package com.controller;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class BookControllerTest {

	@RequestMapping("/getJsonPojoList")
	public void getJsonPojoList(@RequestBody List<User> users){
		System.out.println("============================");
		System.out.println("Json对象(pojo)成功传递.....");
		System.out.println(users);
	}
}

 数据结果:
在这里插入图片描述

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

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

相关文章

K8S平台安全框架

平台安全框架 1 平台安全框架1.1 安全框架1.1.1 认证框架1.1.2 框架解读 1.2 认证实践1.2.1 令牌用户1.2.2 证书用户 1.3 授权实践1.3.1 集群用户1.3.2 角色基础1.3.3 授权基础1.3.4 用户组实践1.3.5 SA授权1.3.6 SA秘钥 1.4 准入实践1.4.1 准入基础1.4.2 优先调度1.4.3 资源配…

F2-NeRF阅读日志

看到了一篇很好的paper&#xff0c;记录一下&#xff0c;参考&#xff1a; https://www.bilibili.com/video/BV1Lz4y187jL/?spm_id_from333.337.search-card.all.click&vd_sourcea059a118f33728f79abd79e02f8f72d4 https://zhuanlan.zhihu.com/p/618362291 latex写的&am…

Qt5编译使用QFtp模块(环境:win+Qt5.15.2+msvc2019)

目录 QFtp下载编译配置QFtp模块测试 QFtp下载 下载方式较多&#xff0c;可以从github上进行下载&#xff1a;https://github.com/qt/qtftp.git 。 我已将下载好的ftp源码资源放出来了&#xff0c;可以直接下载0积分&#xff1a;链接跳转。 编译 使用Qt Create打开工程后&…

DuDuTalk:4G录音工牌在汽车试乘试驾场景中有什么独特应用价值?

在市场竞争越来越激烈的今天&#xff0c;不管是新能源市场还是燃油车市场&#xff0c;试乘试驾已经当仁不让地成为了几乎所有汽车品牌关注的焦点。特斯拉、“蔚小理”、奔驰、宝马等头部品牌&#xff0c;对于试乘试驾的重视度一定程度上甚至已经超过了展厅接待。 然而&#xf…

解决notion共享网址无法复制的问题

1、打开url Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 2、选中要复制的内容。 3、右击鼠标&#xff0c;选择“打印” 4、在打印界面中选中要复制的内容&#xff0c;然后按“复制” 复制完成。

Stable Difussion能做什么?

​扩散模型&#xff08;Diffusion Model&#xff09;​ 稳定扩散模型&#xff08;Stable Diffusion&#xff09;属于深度学习模型中的一个大类&#xff0c;即扩散模型。它们属于生成式模型&#xff0c;这意味着它们是被设计用于根据学习内容来生成相似的新的数据的。对于稳定扩…

Vue2与Vue3相应原理区别

Vue3.0中的响应式原理 vue2.x的响应式 1.实现原理&#xff1a; 对象类型&#xff1a;通过Object.defineProperty()对属性的读取、修改进行拦截&#xff08;数据劫持&#xff09;。数组类型&#xff1a;通过重写更新数组的一系列方法来实现拦截。&#xff08;对数组的变更方法…

测试老鸟整理,性能测试高并发压力测试-案例,进阶之道...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 单个接口的压测&a…

通过foxmail同步其他邮箱邮件到我司邮箱

1、先通过foxmail 登录需要备份邮件的邮箱帐号&#xff0c;全选需要备份的邮件&#xff0c;右键选择“导出邮件”。 2、在foxmail中使用IMAP协议登录我司邮箱帐号&#xff0c;右键选择收件箱或其他文件夹导入邮件&#xff0c;将之前导出备份的邮件文件全选导入。 3、导入完成后…

glibc缺陷居然会导致MySQL卡住?

问题来源&#xff1a; 版本&#xff1a;5.7.25。 现象&#xff1a;备机主从延迟不断变大&#xff0c;无法登陆数据库&#xff0c;建立连接时卡住&#xff0c;但很快恢复正常了。 分析&#xff1a; 常规分析&#xff1a; 通常情况下&#xff0c;这类问题无法分析&#xff0c…

vmware17安装openkylin

官网 系统下载-openKylin 开放麒麟社区官网 | 开源聚力&#xff0c;共创未来 下载链接 https://www.openkylin.top/downloads/download-smp.php?id18 安装 点击浏览&#xff0c;选择镜像 修改服务器cpu配置 修改内存配置 修改网络连接方式 点击启动 等待安装完成 出现上图说…

比较两个Excel表格中的数据,不相同的高亮显示

下面是常用的在Excel中比较两个Excel表格数据的方法&#xff0c; 比如要比较下面A和B中的数据是否一致&#xff1a; 可以这样做&#xff1a;

ikbc键盘2.4G接收器丢失,重新对码

我的键盘&#xff1a;ikbc W200 1.键盘关掉重开&#xff1b; 2.新接收器插在电脑上&#xff1b; 3.电脑上打开软件&#xff0c;点开始对码&#xff0c;一会就连接上了。 对码软件放在这里&#xff1a; 我用夸克网盘分享了「IKBC 对码.rar」&#xff0c;点击链接即可保存。打开…

(Qt) Http之Get请求使用基础

文章目录 前言Code完整code效果循环loop的使用 讲解配置相关对象Https END 前言 http的操作是网络通信中非常常见的操作&#xff0c;其中广泛使用get&#xff0c;post两种操作。 本文将对Qt中&#xff0c;http的get请求做简单应用&#xff0c;来进行展示。 Code 完整code …

2分钟完成Github配置ssh密钥

2分钟完成Github配置ssh密钥 前言&#xff1a; 配置ssh密钥的目的是为了可以在自己的本地开发环境顺利拉取和推送代码到Github 本机是Ubuntu 16.04环境&#xff0c;已安装ssh 步骤1 进入当前用户的home目录&#xff1a; #执行以下命令进入 cd ~进入.ssh/目录下生成ssh的密钥…

JS antdv实现表格树形级联效果

概述 项目中需实现以下这种效果&#xff1a;级联数据&#xff0c;表格横向排列&#xff0c;数据之间相互联动。现有UI组件无法满足此需求&#xff0c;只能撸起袖子加油干&#xff01;&#xff01; 实现效果如下 开发前先准备一个树形数据 treeData.js const treeData [{ar…

Linux常用命令【多图预警】

Linux常用命令 文章目录 Linux常用命令Linux虚拟机的安装Linux系统目录结构Linux命令的语法基础命令查看当前目录下所有子目录和子文件ls查看命令手册man查看当前目录pwd切换到指定目录cd 管道符 |文件目录操作命令创建一级目录&#xff08;文件夹&#xff09;mkdir创建多级目录…

计算机毕业论文内容参考|基于微信小程序的学生课表系统的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序的学生课表系统的设计与实现 摘要 基于微信小程序的学生课表系统是一个方便学…

【电路原理学习笔记】第2章:电压、电流和电阻:2.8 电气安全

第2章&#xff1a;电压、电流和电阻 2.8 电气安全 2.8.1 触电 电流&#xff08;而非电压&#xff09;通过人的身体是触电的的原因。当然&#xff0c;需要有电压施加在有电阻的物体上才能产生电流。当人身体上的一个点与电压接触&#xff0c;而另一个点与不同的电压或地面接触…

玄子Share - mybatis-Plus 3.5.3.1 学习笔记

玄子Share - mybatis-Plus 3.5.3.1 学习笔记 介绍 MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 [MyBatis (opens new window)的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 愿景&#xff1a;…