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

news2024/10/6 11:21:02

在这里插入图片描述

👉博主介绍: 博主从事应用安全和大数据领域,有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/939603.html

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

相关文章

【rar转zip】WinRAR转换压缩包格式

不知道大家有没有遇到需要转换压缩包格式的问题&#xff0c;今天想和大家分享rar压缩包改成zip格式的方法。 方法一&#xff1a; 直接修改rar压缩包的后缀名变为zip&#xff0c;就可以修改压缩包文件格式了 方法二&#xff1a; 先将rar压缩包解压出来&#xff0c;然后再将解…

Stable Diffusion WebUI 整合包

现在网络上出现的各种整合包只是整合了运行 Stable Diffusion WebUI&#xff08;以下简称为 SD-WebUI&#xff09;必需的 Python 和 Git 环境&#xff0c;并且预置好模型&#xff0c;有些整合包还添加了一些常用的插件&#xff0c;其实际与手动进行本地部署并没有区别。 不过&a…

热红外成像技术:未来将有更多技术突破推动应用发展

一、国外发展现状 热红外成像技术在国外得到了广泛的研究和应用。国外的研究机构和企业注重热红外成像技术在军事、环境监测、医疗等领域的应用研究&#xff0c;其中美国、欧洲和日本等国家在热红外成像技术方面处于领先地位。 美国在热红外成像技术方面拥有多个研究机构和公司…

后端面试话术集锦第三篇:spring cloud 相关面试话术

🚗后端面试集锦目录 💖后端面试话术集锦第一篇:spring面试话术💖 💖后端面试话术集锦第二篇:spring boot面试话术💖 💖后端面试话术集锦第三篇:spring cloud面试话术💖 💖后端面试话术集锦第四篇:ElasticSearch面试话术💖 1. 什么是Springcloud Spring …

全景图像生成算法

摘要 全景图像生成是计算机视觉领域的一个重要研究方向。本文对五种经典的全景图像生成算法进行综述&#xff0c;包括基于相机运动估计的算法、基于特征匹配的算法、基于图像切割的算法、基于多项式拟合的算法和基于深度学习的算法。通过对这些算法的原理、优缺点、适用场景等…

最新Burp Suite插件详解

Burp Suite中的插件 Burp Suite中存在多个插件&#xff0c;通过这些插件可以更方便地进行安全测试。插件可以在“BApp Store”&#xff08;“Extender”→“BApp Store”&#xff09;中安装&#xff0c;如图3-46所示。 下面列举一些常见的Burp Suite插件。 1&#xff0e;Act…

怎么在手机上开启提词器?这个方法轻松解决

在现代科技高度发达的时代&#xff0c;手机已经成为了人们生活中不可或缺的一部分。其中&#xff0c;开启提词器也是一种非常重要的工具&#xff0c;在我们需要面对手机录制讲解视频或者其他的一些演讲时&#xff0c;如果屏幕上可以有提词器那真是泰裤辣&#xff01;那么怎么在…

MySQL binlog的几种日志录入格式以及区别

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

不能打电话的流量卡都是物联卡?别胡说八道了!

可能大家对流量卡有一种误区&#xff0c;认为只要是不能打电话&#xff0c;不能发信息的流量卡都是物联卡&#xff0c;其实这种理解是错的。今天小编要为流量卡正名。 为什么要说大家对流量卡有误区呢&#xff0c;其实&#xff0c;目前市面上常见的纯流量卡有两种&#xff0c;…

《C和指针》笔记12: 存储类型(自动变量、静态变量和寄存器变量)

文章目录 1. 自动变量&#xff08;auto&#xff09;1.1 自动变量的初始化 2. 静态变量&#xff08;static&#xff09;2.1 静态变量的初始化 3. 寄存器变量&#xff08;register&#xff09; 1. 自动变量&#xff08;auto&#xff09; 在代码块内部声明的变量的缺省存储类型是…

linux下安装Mycat

1 官网下载mycat 官方网站&#xff1a; 上海云业网络科技有限公司http://www.mycat.org.cn/ github地址&#xff1a; MyCATApache GitHubMyCATApache has 34 repositories available. Follow their code on GitHub.https://github.com/MyCATApache 2 Mycat安装 1 把MyCat…

新方案unity配表工具

工具下载&#xff1a;网盘链接 工具结构&#xff1a;针对每张表格生成一个表格类&#xff0c;其中默认包含一个list和字典类型参数记录表格数据&#xff0c;初始化项目时将list中的数据转为按id索引的dictionary&#xff0c;用于访问数据。额外包含一个同名Temp后缀的类&#…

AI助力智能安检,基于图像目标检测实现危险品X光智能安全检测系统

基于AI相关的技术来对一些重复性的但是又比较重要的工作来做智能化助力是一个非常有潜力的场景&#xff0c;关于这方面的项目开发实践在我之前的文章中也有不少的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a;《AI助力智能安检&#xff0c;基于目标检测模型实现…

【产品规划】产品功能和内容规划

文章目录 1、产品是功能和内容的集合2、确定产品的范围3、产品用户故事4、总结 1、产品是功能和内容的集合 2、确定产品的范围 3、产品用户故事 4、总结

网络安全(黑客技术)学习手册

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

管理类联考——英语二——真题篇——按题型分类——大作文

Write an essay based on the chart below. In your writing, you should 1)interpret the chart, and 2)give your comments. You should write about 150 words on the ANSWER SHEET. (15 points) 2020真题 As is apparently demonstrated in the chart above…

抖店不好做?个人玩家做抖店常见问题解答,看看对你有帮助吗?

我是王路飞。 总是有人私信我&#xff0c;说抖店没有自己想象的那么好做。 你以为的抖店&#xff1a;开店后选一些自认为不错的产品上架到自己店铺&#xff0c;就可以获得平台的流量推荐&#xff0c;然后就可以坐等爆单了&#xff1f; 不现实的&#xff01; 而且抖店也不是…

YOLOv5屏蔽区域训练(选择区域训练)

YOLOv5屏蔽区域/选择区域 训练&#xff08;重点区域训练&#xff09; 前期准备labelme选择mask区域 代码改动 前期准备 思路就是通过使用一个mask掩膜&#xff0c;对我们想要屏蔽或者选择的区域进行定向遮挡或者定向选择&#xff0c;在训练的时候v5需要加载数据即图片和标注信…

登录校验-Interceptor-详解

目录 拦截路径 执行流程 只有拦截器 过滤器和拦截器同时存在 拦截路径 拦截器可以通过需求&#xff0c;在配置类中配置不同的拦截路径 可以设置要拦截的路径以及不进行拦截的路径 package com.example.tlias.config;import com.example.tlias.Interceptor.LoginCheckInterc…

如何判断自动化测试的时机?

判断自动化测试的时机时&#xff0c;可以考虑以下因素&#xff1a; 1、软件稳定性评估&#xff1a; 确定软件的开发阶段&#xff0c;如果软件还在快速迭代和开发中&#xff0c;可能变动频繁&#xff0c;不适合引入自动化测试。 分析软件的功能和接口是否已经相对稳定&#xf…