Springboot开发 -- @RequestBody 接收参数的实例

2024-05-15 09:28

本文主要是介绍Springboot开发 -- @RequestBody 接收参数的实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Spring MVC @RequestBody 实现前后端数据交互

以下是一个使用 jQuery 的 $.ajax 方法发送 POST 请求到后端,后端使用 Spring MVC 的 @RequestBody 注解接收 JSON 参数的示例。

一、前端代码实现

// 假设你已经有了要发送的密码数据  
var passwordData = {  oldPwd: 'oldPassword',  newPwd: 'newPassword'  
};  // 使用 $.ajax 发送 POST 请求  
$.ajax({  url: 'user/changePwd', // 后端接收请求的 URL  type: 'POST', // 请求类型  contentType: 'application/json; charset=utf-8', // 发送的数据类型  dataType: 'json', // 期望从服务器返回的数据类型  data: JSON.stringify(passwordData), // 将对象转换为 JSON 字符串  success: function(response) {  // 请求成功时的处理逻辑  if (response.status === 1) {  // 密码修改成功  alert('密码修改成功!请重新登录!');  // 这里可以添加重定向或登出逻辑  } else {  // 密码修改失败  alert('密码修改失败:' + response.msg);  // 这里可以添加错误处理逻辑  }  },  error: function(jqXHR, textStatus, errorThrown) {  // 请求失败时的处理逻辑  alert('发生错误:' + textStatus + ', ' + errorThrown);  }  
});

二、后端代码 (Spring MVC)

  • 在后端,我们使用Spring MVC来接收前端发送的POST请求。
  • 首先,我们定义一个DTO(Data Transfer Object)类来接收前端发送的JSON数据。
  • 然后,我们创建一个Controller类,并使用@RestController和@PostMapping注解来映射前端发送的POST请求。
  • 在请求处理方法中,我们使用@RequestBody注解来自动将前端发送的JSON数据转换为DTO对象。
  • 最后,我们编写处理逻辑,并返回一个包含状态码和消息的JSON响应给前端。
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RequestBody;  
import org.springframework.web.bind.annotation.RestController;  // 假设的 DTO (Data Transfer Object) 类  
public class PasswordChangeDTO {  private String oldPwd;  private String newPwd;  // 必须要有 getter 和 setter 方法  // ... getter 和 setter 方法 ...  // toString 方法可以方便调试时查看对象内容  @Override  public String toString() {  return "PasswordChangeDTO{" +  "oldPwd='" + oldPwd + '\'' +  ", newPwd='" + newPwd + '\'' +  '}';  }  
}  @RestController  
public class UserController {  @PostMapping("/user/changePwd")  public Map<String, Object> changePassword(@RequestBody PasswordChangeDTO passwordChangeDTO) {  // 这里是密码修改的逻辑  // passwordChangeDTO 中包含了从前端发送过来的 oldPwd 和 newPwd  // 假设密码修改成功  Map<String, Object> result = new HashMap<>();  result.put("status", 1);  result.put("msg", "密码修改成功!");  // 如果密码修改失败,可以返回不同的状态码和消息  return result;  }  
}

三、contentType/dataType/data 参数使用总结

在这个例子中,前端使用 $.ajax 发送了一个包含 JSON 数据的 POST 请求到 /user/changePwd。后端使用 Spring MVC 的 @RestController 和 @PostMapping 注解来映射这个请求,并使用 @RequestBody 来自动将 JSON 数据转换为 PasswordChangeDTO 对象。后端处理完请求后,返回一个包含状态码和消息的 JSON 响应给前端。前端在 success 回调中处理这个响应。

在 Ajax 数据传输 JSON 格式数据 参数时,要修改 contentTypedataType 如下:

  • contentType: ‘application/json; charset=utf-8’, // 发送的数据类型
  • dataType: ‘json’, // 期望从服务器返回的数据类型
  • data: JSON.stringify(passwordData), // 将对象转换为 JSON 字符串

在jQuery的$.ajax请求中,contentType、dataType和data这三个参数扮演着不同的角色,用于定义请求的各个方面。以下是这三个参数在发送Ajax请求时的使用总结:

1. contentType

  • contentType参数用于设置发送到服务器的数据的MIME类型。这通常与data参数一起使用,特别是当你要发送JSON数据到服务器时。

  • 用途:告诉服务器请求体的内容类型,以便服务器能够正确地解析数据。

  • 常见值:

‘application/x-www-form-urlencoded;charset=UTF-8’:#这是默认的MIME类型,用于发送简单的表单数据。
‘application/json;charset=utf-8’:当你发送JSON数据到服务器时,应该使用这个MIME类型。

  • 示例:当发送JSON数据时,你需要设置contentType为’application/json; charset=utf-8’,并使用JSON.stringify()将JavaScript对象转换为JSON字符串。

2. dataType

  • dataType参数用于指定你期望从服务器返回的数据类型。这会影响jQuery如何处理响应数据。

  • 用途:告诉jQuery如何处理服务器返回的数据。

  • 常见值:

‘xml’:期望返回XML数据。
‘html’:期望返回HTML内容。
‘json’:期望返回JSON数据。
‘text’:期望返回纯文本。
‘script’:期望返回JavaScript代码,并会执行它。

  • 示例:如果你期望服务器返回JSON数据,你应该设置dataType为’json’。这样,jQuery会自动将响应体解析为JavaScript对象,并可以在success回调函数中直接使用它。

3. data

  • data参数用于发送要提交给服务器的数据。这可以是简单的键值对,也可以是复杂的JavaScript对象或数组。

  • 用途:定义要发送到服务器的数据。

  • 格式:

键值对:{ key1: ‘value1’, key2: ‘value2’ }
数组:[ ‘value1’, ‘value2’ ]

  • 当发送JSON数据时,需要使用JSON.stringify()将JavaScript对象转换为JSON字符串。
  • 示例:
    如果你要发送一个包含用户信息的对象到服务器,你可以这样做:data: { username: ‘JohnDoe’, email: ‘johndoe@example.com’ }。
    如果要发送JSON数据,则需要先转换为字符串:data: JSON.stringify({ username: ‘JohnDoe’, email: ‘johndoe@example.com’ }),并设置contentType为’application/json; charset=utf-8’。

4. 总结

  • contentType定义了发送到服务器的数据的MIME类型,特别是当发送JSON数据时。
  • dataType指定了期望从服务器返回的数据类型,并影响jQuery如何处理响应数据。
  • data包含了要发送到服务器的数据,可以是简单的键值对、数组或JSON字符串。

通过正确设置这些参数,你可以确保Ajax请求按照预期的方式发送和接收数据。

这篇关于Springboot开发 -- @RequestBody 接收参数的实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991447

相关文章

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

SpringBoot整合(ES)ElasticSearch7.8实践

《SpringBoot整合(ES)ElasticSearch7.8实践》本文详细介绍了SpringBoot整合ElasticSearch7.8的教程,涵盖依赖添加、客户端初始化、索引创建与获取、批量插... 目录SpringBoot整合ElasticSearch7.8添加依赖初始化创建SpringBoot项

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

Java docx4j高效处理Word文档的实战指南

《Javadocx4j高效处理Word文档的实战指南》对于需要在Java应用程序中生成、修改或处理Word文档的开发者来说,docx4j是一个强大而专业的选择,下面我们就来看看docx4j的具体使用... 目录引言一、环境准备与基础配置1.1 Maven依赖配置1.2 初始化测试类二、增强版文档操作示例2.

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命