【Java 高阶】一文精通 Spring MVC - JSON 处理(九)

news2024/11/25 12:41:20

在这里插入图片描述

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主

⛪️ 个人社区:个人社区
💞 个人主页:个人主页
🙉 专栏地址: ✅ Java 高阶
🙉八股文专题:剑指大厂,手撕 Java 八股文

文章目录

      • 1. 如何处理 JSON 的请求和响应
      • 2. @ResponseBody 响应json
      • 3. @RequestBody 响应 json
        • 3.1. 通过ajax接收单个简单类型参数
        • 3.2. 通过ajax接收实体类参数
        • 3.3. 通过ajax接收Map类型参数
        • 3.4. 通过ajax接收List类型参数

1. 如何处理 JSON 的请求和响应

在Spring MVC中处理JSON请求和响应有几种方法。以下是其中两种常用的方法:

  1. 使用@RequestBody和@ResponseBody注解:

    • 对于处理JSON请求,可以在Controller的方法参数上使用@RequestBody注解。这将自动将请求的JSON数据绑定到方法参数对象中。
    • 对于JSON响应,可以在Controller的方法上使用@ResponseBody注解。这将自动将方法返回的对象转换为JSON格式,并作为响应发送回客户端。

    例如,假设我们有一个User类表示用户信息:

@Data
public class User {
    private String name;
    private int age;
}

然后,我们可以在Controller中使用这些注解来处理JSON请求和响应:

@RestController
public class UserController {
     @PostMapping("/users")
     public void createUser(@RequestBody User user) {
         // 处理接收到的JSON请求
     }

     @GetMapping("/users/{id}")
     public User getUser(@PathVariable int id) {
         // 返回User对象,将自动转换为JSON响应
         User user = // 从数据库获取用户信息
         return user;
     }
 }
  1. 使用@ResponseBody和ResponseEntity:

    • 对于JSON请求,可以直接在方法参数上使用@RequestBody注解,与第一种方法相同。
    • 对于JSON响应,可以使用ResponseEntity类来包装响应数据,并设置HTTP状态码、头部信息等。同时,可以使用@ResponseBody注解将返回的对象转换为JSON格式。

    例如:

@RestController
public class UserController {
    @PostMapping("/users")
    public void createUser(@RequestBody User user) {
        // 处理接收到的JSON请求
    }

    @GetMapping("/users/{id}")
    public ResponseEntity<User> getUser(@PathVariable int id) {
        // 从数据库获取用户信息
        User user = // ...
        return ResponseEntity.ok(user); // 返回User对象,并设置HTTP状态码为200
    }
}

2. @ResponseBody 响应json

@ResponseBody注解用于将方法的返回值转换为JSON格式,并作为响应发送回客户端。在Spring MVC中,默认情况下,使用Jackson库来进行JSON转换。

下面是一个示例代码,展示如何在Spring MVC中使用@ResponseBody注解来响应JSON数据:

@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public ResponseEntity<User> getUser(@PathVariable int id) {
        // 从数据库获取用户信息
        User user = // ...
        return ResponseEntity.ok(user); // 返回User对象,并设置HTTP状态码为200
    }
}

getUser() 方法使用 @GetMapping 注解来处理GET请求,并使用 @PathVariable 注解来接收路径参数。方法的返回类型是 ResponseEntity<User> ,其中 User 是表示用户信息的类。 ResponseEntity 是Spring MVC提供的一个类,用于封装响应数据,包括HTTP状态码、头部信息等。

通过 ResponseEntity.ok(user) ,我们将 User 对象作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController 注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。

3. @RequestBody 响应 json

3.1. 通过ajax接收单个简单类型参数

如果你想通过Ajax接收单个简单类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。

以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收单个简单类型参数:

@RestController
public class ExampleController {
    @PostMapping("/example")
    public ResponseEntity<String> processExample(@RequestBody String data) {
        // 处理接收到的数据
        String result = "处理结果:" + data;
        return ResponseEntity.ok(result);
    }
}

processExample() 方法使用 @PostMapping 注解来处理POST请求,并使用 @RequestBody 注解来接收请求体中的数据。方法的参数类型是 String ,表示接收到的数据。

通过 ResponseEntity.ok(result) ,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController 注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。

在前端使用Ajax发送请求时,可以使用 $.ajax$.post 等方法,并设置 dataType: 'json' 来指定接收的数据类型为JSON。例如:

$.ajax({
    url: '/example',
    type: 'POST',
    data: 'Hello',
    dataType: 'json',
    success: function(response) {
        console.log(response);
        // 处理响应数据
    }
});

上述代码中,我们发送了一个POST请求到 /example 路径,请求体中包含字符串数据"Hello"。通过设置 dataType: 'json' ,我们告诉Ajax请求接收JSON格式的响应数据。

3.2. 通过ajax接收实体类参数

如果你想通过Ajax接收实体类参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。

以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收实体类参数:

@RestController
public class ExampleController {
    @PostMapping("/example")
    public ResponseEntity<Result> processExample(@RequestBody Request request) {
        // 处理接收到的请求数据
        Result result = new Result("处理成功", request);
        return ResponseEntity.ok(result);
    }
}

processExample() 方法使用 @PostMapping 注解来处理POST请求,并使用 @RequestBody 注解来接收请求体中的数据。方法的参数类型是一个自定义的实体类 Request ,表示接收到的请求数据。

通过 ResponseEntity.ok(result) ,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController 注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。

在前端使用Ajax发送请求时,可以使用 $.ajax$.post 等方法,并设置 dataType: 'json' 来指定接收的数据类型为JSON。例如:

$.ajax({
    url: '/example',
    type: 'POST',
    data: JSON.stringify({ name: 'John', age: 25 }),
    contentType: 'application/json',
    dataType: 'json',
    success: function(response) {
        console.log(response);
        // 处理响应数据
    }
});

上述代码中,我们发送了一个POST请求到 /example 路径,请求体中包含一个JSON对象,表示实体类参数。通过设置 contentType: 'application/json'dataType: 'json' ,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。

3.3. 通过ajax接收Map类型参数

如果你想通过Ajax接收Map类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。

以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收Map类型参数:

@RestController
public class ExampleController {
    @PostMapping("/example")
    public ResponseEntity<Map<String, Object>> processExample(@RequestBody Map<String, Object> data) {
        // 处理接收到的数据
        Map<String, Object> result = new HashMap<>();
        result.put("message", "处理成功");
        result.put("data", data);
        return ResponseEntity.ok(result);
    }
}

processExample() 方法使用 @PostMapping 注解来处理POST请求,并使用 @RequestBody 注解来接收请求体中的数据。方法的参数类型是 Map<String, Object> ,表示接收到的数据。

通过 ResponseEntity.ok(result) ,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController 注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。

在前端使用Ajax发送请求时,可以使用 $.ajax$.post 等方法,并设置 dataType: 'json' 来指定接收的数据类型为JSON。例如:

$.ajax({
    url: '/example',
    type: 'POST',
    data: JSON.stringify({ key1: 'value1', key2: 'value2' }),
    contentType: 'application/json',
    dataType: 'json',
    success: function(response) {
        console.log(response);
        // 处理响应数据
    }
});

上述代码中,我们发送了一个POST请求到 /example 路径,请求体中包含一个JSON对象,表示Map类型参数。通过设置 contentType: 'application/json'dataType: 'json' ,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。

3.4. 通过ajax接收List类型参数

如果你想通过Ajax接收List类型参数,并将响应以JSON格式返回,可以使用@ResponseBody注解来实现。在Spring MVC中,默认使用Jackson库进行JSON转换。

以下是一个示例代码,展示如何使用@ResponseBody注解来响应JSON数据,并通过Ajax接收List类型参数:

@RestController
public class ExampleController {
    @PostMapping("/example")
    public ResponseEntity<List<String>> processExample(@RequestBody List<String> data) {
        // 处理接收到的数据
        List<String> result = new ArrayList<>();
        for (String item : data) {
            result.add("处理结果:" + item);
        }
        return ResponseEntity.ok(result);
    }
}

processExample() 方法使用 @PostMapping 注解来处理POST请求,并使用 @RequestBody 注解来接收请求体中的数据。方法的参数类型是 List<String> ,表示接收到的数据。

通过 ResponseEntity.ok(result) ,我们将处理结果作为响应体,并设置HTTP状态码为200(表示成功)。由于在类上使用了 @RestController 注解,方法的返回值将自动转换为JSON格式,并作为响应发送回客户端。

在前端使用Ajax发送请求时,可以使用 $.ajax$.post 等方法,并设置 dataType: 'json' 来指定接收的数据类型为JSON。例如:

$.ajax({
    url: '/example',
    type: 'POST',
    data: JSON.stringify(['item1', 'item2', 'item3']),
    contentType: 'application/json',
    dataType: 'json',
    success: function(response) {
        console.log(response);
        // 处理响应数据
    }
});

上述代码中,我们发送了一个POST请求到 /example 路径,请求体中包含一个JSON数组,表示List类型参数。通过设置 contentType: 'application/json'dataType: 'json' ,我们告诉Ajax请求发送JSON格式的数据,并接收JSON格式的响应数据。

精彩专栏推荐订阅:在下方专栏👇🏻
✅ 2023年华为OD机试真题(A卷&B卷)+ 面试指导
✅ 精选100套 Java 项目案例
✅ 面试需要避开的坑(活动)
✅ 你找不到的核心代码
✅ 带你手撕 Spring
✅ Java 初阶

在这里插入图片描述

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

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

相关文章

工业RFID在智能半导体领域的创新驱动!

在当今科技飞速发展的时代&#xff0c;半导体工业作为先锋领域&#xff0c;正不断追求更高的生产效率和产品质量。在这一挑战背后&#xff0c;RFID技术应运而生&#xff0c;为生产过程追踪和控制&#xff0c;以及在线检测和质量管理带来了前所未有的创新。通过其独特的优势&…

Ubuntu 22.04安装 —— Win11 22H2

目录 Ubuntu使用下载UbuntuVmware 安装图示安装步骤图示 Ubuntu使用 系统环境&#xff1a; Windows 11 22H2Vmware 17 ProUbutun 22.04.3 Server Ubuntu Server documentation | Ubuntu 下载 Ubuntu 官网下载 建议安装长期支持版本 ——> 可以选择桌面版或服务器版(仅包…

Java“牵手”天猫整店商品API接口数据,通过店铺ID获取整店商品详情数据,天猫店铺所有商品API申请指南

天猫平台店铺所有商品数据接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…

手术麻醉临床信息系统B/S版源码 手麻系统源码 实现手术和麻醉过程全程记录和监护

系统概述&#xff1a; 手术麻醉临床信息系统实现手术及麻醉流程信息化管理&#xff0c;能促进医院手术、麻醉管理合理、有效、安全地运行&#xff0c;并留下完整的手术记录、全程跟踪、记录手术的申请&#xff08;预约&#xff09;、审批、手术室和麻醉科对手术进行安排等相关…

一起学SF框架系列附-Springframework源码学习总结

学习过程 学习Springframework6.0.8&#xff0c;前后将近4个月终于结束了。学习主要内容如图&#xff08;红框&#xff09;&#xff1a; 本次学习主要针对核心模块&#xff1a;Beans、Context、Core、SpEL&#xff08;完全独立于框架的&#xff0c;没深入学习&#xff09;、…

习题练习 C语言(暑期第二弹)

编程能力小提升&#xff01; 前言一、表达式判断二、Assii码的理解应用三、循环跳出判断四、数字在升序数组中出现的次数五、整数转换六、循环语句的应用七、函数调用八、两个数组的交集九、C语言基础十、图片整理十一、数组的引用十二、数组的引用十三、字符个数统计十四、多数…

最详细jdk安装以及配置环境(保姆级教程)

一.进入oracle官网&#xff0c;下载jdk oracle官网&#xff1a;Oracle | Cloud Applications and Cloud Platform ps:不同的浏览器&#xff0c;可能进入oracle官网&#xff0c;会只显示部分内容&#xff0c;所以建议使用google Chrome浏览器 在下载之前&#xff0c;首先需要去…

Easy Deal.mt4 9月版--v3.5(含EA)

总结&#xff1a;复盘 8月1日~27日&#xff0c;盈利11%&#xff08;可放大10倍&#xff09;&#xff0c;但整体回撤还是比较大&#xff0c;有待优化。 在这一版里&#xff0c;ED基本逻辑为: 1、第1单以heiken ashi smoothed趋势指标判断入场。&#xff08;使用1分钟图&#xf…

ssm校园快递一站式服务系统源码和论文

ssm校园快递一站式服务系统源码和论文076 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 选题的目的和意义&#xff1a; 目的&#xff1a; 校园快递一站式服务系统的研究目的有两个&#xff0c;一个为校园及…

深度学习怎么学?

推荐这本小白看的《深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09;》。 深度学习&#xff1a;从基础到实践&#xff08;上下册&#xff09; 深入浅出的讲述了深度学习的基本概念与理论知识&#xff0c;不涉及复杂的数学内容&#xff0c;零基础小白也能轻松掌…

移动硬盘出现两份多个分区并无法使用的情况

文章目录 问题描述解决方案发现问题 问题描述 移动硬盘借给组内同学装Ubuntu之后&#xff0c;出现多个分区&#xff0c;windows10操作系统识别到两个分区并且无法读取&#xff0c;并且出现格式化提醒&#xff0c;但是由于只读属性&#xff0c;而无法格式化的情况。注意这两个分…

【Java 中级】一文精通 Spring MVC - 转发重定向(四)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【Mybatis】MybatisPlus轻松实现数据动态可配置热脱敏

文章目录 前言一、数据1.1、mybatis-plus 统一字段管理1.2、Map 映射如何实现字段自动填充1.3、数据权限1.4、TenantLineInnerInterceptor 的升级改造1.5、TenantLineInnerInterceptor 改造 21.6、数据权限改造 3 二、数据脱敏三、TypeHander总结 前言 网站开发功能是否全面是…

【Java 中级】一文精通 Spring MVC - 标签库 (八)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【JAVA基础——static关键字】

JAVA基础 static关键字 文章目录 JAVA基础概述静态成员与加载顺序 概述 static 变量&#xff1a;static变量由该类的所有对象共享&#xff0c;不需要创建对象也可使用。static 方法&#xff1a;允许直接访问&#xff0c;不需要创建对象也可被调用。如 main 方法。static 初始…

华为OD机试 - 求字符串中所有整数的最小和 - 逻辑分析(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

一个免费好用的全域数据集成平台

文章目录 全域数据集成平台RestCloud一、产品架构一、数据源管理二、离线数据集成三、实时数据集成四、监控中心五、对比总结六、离线数据集成实战1.新建mysql数据源2.离线数据集成3.执行同步数据 大家好&#xff0c;我是脚丫先生 (o^^o) 小伙伴们都知道&#xff0c;在之前数据…

无涯教程-机器学习 - 矩阵图函数

相关性是有关两个变量之间变化的指示&#xff0c;在前面的章节中&#xff0c;无涯教程讨论了Pearson的相关系数以及相关的重要性&#xff0c;可以绘制相关矩阵以显示哪个变量相对于另一个变量具有较高或较低的相关性。 在以下示例中&#xff0c;Python脚本将为Pima印度糖尿病数…

VMware虚拟机的安装以及安装CentOS系统

VMware虚拟机是一款非常受欢迎的虚拟化软件&#xff0c;它可以模拟一台计算机运行在另一台计算机上&#xff0c;从而实现在一台物理机器上运行多个虚拟机的目的。在本文中&#xff0c;我们将会介绍如何安装VMware虚拟机并在其中安装CentOS操作系统。 文章目录 &#x1f4c0;VMw…