SpringMVC:消息转换器

1. HttpMessageConvertor

简介

HttpMessageConverter是Spring MVC中非常重要的一个接口。翻译为:HTTP消息转换器。该接口下提供了很多实现类,不同的实现类有不同的转换方式。 

 转换器

 

 

 

如上图所示:HttpMessageConverter接口的可以将请求协议转换成Java对象,也可以把Java对象转换为响应协议。**HttpMessageConverter是接口,SpringMVC帮我们提供了非常多而丰富的实现类。每个实现类都有自己不同的转换风格。****对于我们程序员来说,Spring MVC已经帮助我们写好了,我们只需要在不同的业务场景下,选择合适的HTTP消息转换器即可。 

2. @ResponseBody注解 

当加上@ResponseBody注解后返回的内容不再是逻辑视图

* 底层会通过StringHttpMessageConverter解析返回的数据并展示到前端页面中

* 即无需进行页面跳转从而展示不同的资源组件 

@GetMapping("/hello")@ResponseBodypublic String testResponseBodyAxios() {return "通过@ResponseBody注解直接返回数据并展示,无需页面跳转";}
/**** 当控制器上的方法加上@ResponseBody注解并且返回的内容为JavaBean* 底层通过MappingJackson2HttpMessageConverter类解析成JSON串并进行返回* 前提:   导入JSON组件,可以将前端发来的JSON解析成对象,或者将后端字符串或者对象解析成功JSON串后进行发送*         <dependency>*             <groupId>com.fasterxml.jackson.core</groupId>*             <artifactId>jackson-databind</artifactId>*             <version>2.17.0</version>*         </dependency>*/
    @GetMapping("/axios")@ResponseBodypublic User testObjectAxios() {User user = new User("张三", 19);return user;}

3. @RequestBody注解

/**** @RequestBody注解:* 该注解只能用于方法形参上* 该注解直接将请求信息传递给Java程序,在Java程序中可以直接使用String类型的变量接收请求信息* 该注解底层基于FormHttpMessageConverter实现** 重点:* 如果前端发送过来的请求信息是JSON字符串,可将JSON字符串直接转换为Java对象* 前提也需要导入依赖*      <dependency>*          <groupId>com.fasterxml.jackson.core</groupId>*          <artifactId>jackson-databind</artifactId>*          <version>2.17.0</version>*      </dependency>*/
    @PostMapping("/save")@ResponseBodypublic String testRequest(@RequestBody String requestStr) {System.out.println(requestStr);return requestStr;}
    @PostMapping("/save")public String testRequest(@RequestBody User user) {System.out.println(user);return "ok";}

4. RequestEntity类

/**** RequestEntity类:* 这个类的实例封装了整个协议* Springmvc自动创建好,可以直接传递给控制器方法的形参上* 可通过该实列对象获取协议中的任何信息,包括请求方法、请求体、请求头*/
    @GetMapping("/requestEntity")public String test(RequestEntity requestEntity) {System.out.println(requestEntity.getMethod());System.out.println(requestEntity.getType());System.out.println(requestEntity.getUrl());return "ok";}

 5. ResponseEntity类

ResponseEntity不是注解,是一个类。用该类的实例可以封装响应协议,包括:状态行、响应头、响应体。也就是说:如果你想定制属于自己的响应协议,可以使用该类。假如我要完成这样一个需求:前端提交一个id,后端根据id进行查询,如果返回null,请在前端显示404错误。如果返回不是null,则输出返回的user。 

@Controller
public class UserController {@GetMapping("/users/{id}")public ResponseEntity<User> getUserById(@PathVariable Long id) {User user = userService.getUserById(id);if (user == null) {return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);} else {return ResponseEntity.ok(user);}}
}

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

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

相关文章

基于ESP32-S3芯片的通用型无线模组方案,启明云端乐鑫一级代理商

随着物联网技术的飞速发展&#xff0c;智能设备正以前所未有的速度进入到我们的日常生活中&#xff0c;AIoT&#xff08;人工智能物联网&#xff09;已成为智能家居、智能设备、智能安防等领域的核心技术。 作为乐鑫一级代理商&#xff0c;基于ESP32-S3芯片&#xff0c;启明云…

科技云报道:走出“实验室”,GenAI迎来关键拐点

科技云报道原创。 对传统产业来说&#xff0c;GenAI是一场“哥白尼式的革命”&#xff0c;它改变了传统的业务模式&#xff0c;开启了人类与AI合作的新纪元。基于AI助手和大语言模型&#xff0c;企业能够实现智能运营的目标。 如果说&#xff0c;2022年是AI大模型元年&#x…

【全开源】Java AI绘画MJ绘画源码小程序APP公众号源码AI绘图

&#x1f3a8; 探索AI绘画的奥秘 一、引言&#xff1a;AI绘画的魅力 &#x1f308; 在这个数字化飞速发展的时代&#xff0c;AI绘画已经不再是遥不可及的梦想。通过源码小程序&#xff0c;我们可以轻松探索AI绘画的奥秘&#xff0c;感受科技与艺术的完美结合。今天&#xff0…

电脑误删除文件如何恢复?几种常用的数据恢复方法分享!

处理电脑文件时误删是大部分电脑用户可能都会面临的一个问题。如果是比较重要的文件&#xff0c;很多用户就会开始心慌&#xff0c;不知道如何是好。那么&#xff0c;电脑怎么恢复删除的文件呢&#xff1f; 其实方法很简单&#xff0c;下面小编就给大家分享几种常用的数据恢复方…

react-学习基础偏

1.新建文件夹 2.vscode引入这个文件夹 3.打开vscode终端 执行命令 npx create-react-app react-basic 创建基本项目&#xff08;react-basic项目文件夹名&#xff09; 4.进入到这个文件夹 可用的一些命令 这就算启动成功 5. 这是项目的核心包 渲染流程

java自学阶段二:JavaWeb开发06(mybatis学习)

目录&#xff1a; 学习目标mybatis的基础用法&#xff08;新增、删除、修改、查询&#xff09; 一&#xff1a;学习目标&#xff1a; 1&#xff09;了解mybatis的基础概念&#xff1b; 2&#xff09;学会mybatis的基础用法&#xff1b; 二、mybatis的基础概念&#xff1a; M…

手把手教你改进YOLOv8小目标检测(多尺度特征融合iAFF)

1,YOLOv8改进策略指南 YOLOv8是目标检测领域中一个重要的模型,它在YOLO系列的基础上进行了进一步的改进和优化。 根据搜索结果,YOLOv8的一些改进策略包括: 注意力机制的增加:通过引入注意力机制,可以提高模型对目标特征的捕捉能力,从而提升检测性能2369。 卷积和Block的…

Unity Obi Rope失效

文章目录 前言一、WebGL端Obi Rope失效二、Obi Rope 固定不牢三、使用Obi后卡顿总结 前言 Obi 是一款基于粒子的高级物理引擎&#xff0c;可模拟各种可变形材料的行为。 使用 Obi Rope&#xff0c;你可以在几秒内创建绳索和杆子&#xff0c;同时完全控制它们的形状和行为&…

scipy.io.loadmat加载.mat文件,出现KeyError: ‘xxx‘

源代码&#xff1a; input_image loadmat(rC:\Users\admin\Downloads\Indian_Pines\SVM/aa.mat)[aa] #影像图 错误显示&#xff1a; 解决方法&#xff1a; 因为loadmat函数读取出来的高光谱数据是dict格式的所以需要定位才能进行后续操作&#xff0c;定位通常是通过列名&a…

运筹说 第116期 | 算法介绍之排队论

在这个快节奏的时代&#xff0c;无论是线上购物、线下服务&#xff0c;还是工业生产&#xff0c;我们都不可避免地与“排队”打交道。今天小编将带你一起探索利用Python和MATLAB这两种编程工具&#xff0c;来求解排队论中的常见模型和排队优化问题。我们将从排队论的基础模型开…

U盘杀毒是否会导致文件丢失?误删文件如何恢复?

在数字化时代&#xff0c;U盘作为便携的数据存储设备&#xff0c;广泛应用于我们的日常生活与工作中。然而&#xff0c;随着网络环境的复杂化&#xff0c;U盘也时常成为病毒传播的媒介。因此&#xff0c;对U盘进行杀毒成为保护数据安全的重要步骤。但许多用户担心&#xff0c;给…

centos安装vscode的教程

centos安装vscode的教程 步骤一&#xff1a;打开vscode官网找到历史版本 历史版本链接 步骤二&#xff1a;找到文件下载的位置 在命令行中输入&#xff08;稍等片刻即可打开&#xff09;&#xff1a; /usr/share/code/bin/code关闭vscode后&#xff0c;可在应用程序----编程…

10Linux 进程管理学习笔记

Linux 进程管理 目录 文章目录 Linux 进程管理一.进程1.显示当前进程状态(ps)进程树(pstree)1.1实时显示进程信息(top)顶部概览信息&#xff1a;CPU 状态&#xff1a;内存状态&#xff1a;进程信息表头&#xff1a;进程列表&#xff1a;1.2(htop) 2.终止进程(kill)2.1通过名称…

Jetson Orin Nano安装使用;cuda、pytorch安装;yolo使用

参考: https://blog.csdn.net/q839039228/article/details/126278528 1、jtop工具安装 安装jtop资源查看: sudo apt update sudo apt upgrade安装: sudo apt install curl nanosudo pip install jetson-stats查看: jtop 按2查看GPU 按3查看CPU 2、JetPack套件 参…

修改云主机配置 - 内存增容

文章目录 一、修改云主机配置缘由二、修改云主机配置步骤1、查看云主机概述2、查看master云主机3、更改master云主机配置4、查看master云主机 三、使用Spark Shell玩Saprk SQL1、启动HDFS服务2、启动Spark集群3、启动集群模式Spark Shell4、读取文件生成单例数据帧5、将单列数据…

C语言----字符串、字符数组

一、定义 C语言中的字符串是以字符数组的形态存在的 在C语言中&#xff0c;没有字符串类型&#xff0c;字符串实际上是使用空字符\0结尾的一维字符数组。因此&#xff0c;\0是用于标记字符串的结束。 二 、如何创建字符串&#xff1f; 1.通过字符数组来创建字符串&#xff0…

某黑产组织最新攻击样本利用BYVOD技术的详细分析

前言概述 最近一两年BYVOD技术被广泛应用到了各种黑产攻击、APT攻击以及勒索病毒攻击活动当中&#xff0c;笔者近期在对某黑产组织进行跟踪&#xff0c;捕获到该组织的最新攻击样本&#xff0c;通过某安全厂商的驱动漏洞&#xff0c;利用BYVOD技术对抗其他安全软件包括各种EDR…

单片机+M26429+PAM8403+MH-M18无线蓝牙音频功放设计 原理图PCB源程序

目录 功能描述&#xff1a; 原理图 PCB ​代码 资料下载地址&#xff1a;单片机M26429PAM8403MH-M18无线蓝牙音频功放设计 原理图PCB源程序 功能描述&#xff1a; 1&#xff0c;无线蓝牙连接&#xff0c;手机可控制歌曲音频选择。 2&#xff0c;音频声音的大小可控制一排…

三维模型轻量化工具:手工模型、BIM、倾斜摄影等皆可用!

老子云是全球领先的数字孪生引擎技术及服务提供商&#xff0c;它专注于让一切3D模型在全网多端轻量化处理与展示&#xff0c;为行业数字化转型升级与数字孪生应用提供成套的3D可视化技术、产品与服务。 老子云是全球领先的数字孪生引擎技术及服务提供商&#xff0c;它专注于让…

sectigo和certum ip ssl证书的区别

IP SSL证书是一种数字证书&#xff0c;为客户端和服务器之间的信息传输提供加密服务。但是和应用比较广泛的域名SSL证书相比&#xff0c;IP SSL证书是为只有公网IP地址的网站准备的数字证书。市场上常见的IP SSL证书品牌就是Sectigo和Certum&#xff0c;那么&#xff0c;这两种…