【Spring】抽丝剥茧SpringMVC-HttpMessageConverter

基于MicroBlaze与LWIP的FPGA以太网通信实战指南 本文详细介绍了基于MicroBlaze软核处理器与LWIP协议栈的FPGA以太网通信实现方案。通过Vivado工具链配置硬件设计,结合LWIP轻量级TCP/IP协议栈优化,提供高效、低成本的嵌入式网络解决方案,适用于工业控制等场景。文章包含硬件设计、软件配置及常见问题排查等实战指南。 阅读详情

本文源码基于SpringMVC 5.2.7

HttpMessageConverter

HttpMessageConverter是SpringMVC重要功能组件之一。它提供两个基础功能:其一,从request body中读取数据并转换为对应的类型;其二,将对象写入到response body中。HttpMessageConverter是接口,规范了具体实现类的行为。HttpMessageConverter主要提供两组接口分别对应读、写。

HttpMessageConverter主要在参数解析、返回值处理两个场景中使用,例如参数解析器RequestResponseBodyMethodProcessor(即是参数解析器也是返回处理器)、HttpEntityMethodProcessor等,返回处理器ResponseBodyEmitterReturnValueHandler等。

public interface HttpMessageConverter<T> {

	//笔者注:判断是否能从输入流读取并返回指定类型的对象
    //参数clazz:Class<?>类型,指定的类型
    //参数mediaType:MediaType类型,request的Content-Type
	boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);

    //笔者注:判断是否能将指定类型的对象写入到输出流
    //参数clazz:Class<?>类型,指定的类型
    //参数mediaType:MediaType类型,写到response的"Content-Type"	
	boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);

    
	List<MediaType> getSupportedMediaTypes();

    //笔者注:从输入流中读取并返回指定类型的对象
    //参数clazz:Class<?>类型,指定的类型
    //参数inputMessage:HttpInputMessage类型,输入流
	T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
			throws IOException, HttpMessageNotReadableException;

	//笔者注:将指定对象写入到输出流
    //参数t:泛型T,将被写到输出流的对象
    //参数contentType:MediaType类型,写到response的"Content-Type",与canWrite对应
    //参数outputMessage:HttpOutputMessage类型,输出流
	void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
			throws IOException, HttpMessageNotWritableException;

}

GenericHttpMessageConverter

GenericHttpMessageConverter是HttpMessageConverter子接口,增加了对泛型的支持

public interface GenericHttpMessageConverter<T> extends HttpMessageConverter<T> {

	boolean canRead(Type type, @Nullable Class<?> contextClass, @Nullable MediaType mediaType);

	T read(Type type, @Nullable Class<?> contextClass, HttpInputMessage inputMessage)
			throws IOException, HttpMessageNotReadableException;


	boolean canWrite(@Nullable Type type, Class<?> clazz, @Nullable MediaType mediaType);


	void write(T t, @Nullable Type type, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
			throws IOException, HttpMessageNotWritableException;

}

常见实现类

实现类功能支持的条件是否默认添加
org.springframework.http.converter.ByteArrayHttpMessageConverter读取写入byte数组

指定类型是byte[]

MediaType是application/octet-stream、*/*

是
org.springframework.http.converter.StringHttpMessageConverter读取写入String类型对象

指定类型是String

MediaType是text/plain、*/*

是
org.springframework.http.converter.xml.SourceHttpMessageConverter读取写入javax.xml.transform.Source类型对象

指定类型

javax.xml.transform.dom.DOMSource、javax.xml.transform.sax.SAXSource、

javax.xml.transform.stax.StAXSource、javax.xml.transform.stream.StreamSource或接口javax.xml.transform.Source

MediaType是application/xml、text/xml、application/*+xml

是

org.springframework.http.converter.support

.AllEncompassingFormHttpMessageConverter

读取写入org.springframework.util.MultiValueMap类型对象

指定类型org.springframework.util.MultiValueMap及子类

读取支持的MediaType是application/x-www-form-urlencoded

写入支持的MediaType是application/x-www-form-urlencoded、multipart/form-data、multipart/mixed

是

org.springframework.http.converter.json

.MappingJackson2HttpMessageConverter

读取写入任何对象类型

无需指定类型

MediaType是application/json、application*+json

否


目录 目录

上一篇 ContentNegotiationManager

下一篇 请求间传递参数机制FlashMap

再下一篇 SessionAttributes机制

Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 目录 Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现步骤 六、关键代码 一、简单介绍 Unity中的一些基础知识点。 本节介绍,Asset Bundle 在 Unity中的使用,入门第一篇,如何AssetBundle标记,如何打包成AssetBundle的操作方法,有不对的地方欢迎指正。... 阅读详情

相关推荐

当兵心理测试软件,当兵心理测试题及答案

心理测试是一种比较先进的测试方法,它是指通过一系列手段,将人的某些心理特征数量化,来衡量个体心理因素水平和个体心理差异差异的一种科学测量方法。小编为你整理了当兵心理测试题及答案,希望对你有所参考帮助。征兵心理测试题(1代表是2代表否)1、我的胃口很好。12、我早上起来的时候,多半觉得睡眠充足,头脑清醒13、我喜欢看报纸上的犯罪新闻。14、有时我常感到困难重重,无法克服。25、我时常遇见一些所谓的专...

weixin_42128393的博客 1万+

一篇文章教你弄懂SpringMvc中的HttpMessageConverter

文章目录一、HttpMessageConverter介绍二、自定义HttpMessageConverter 写在前面: 我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。 写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习。 导语:相信使用过Spring的开发人员都用过@RequestBody、@ResponseBody注解,可以直接将输入解析成Json、将输出解析成Js

境里婆娑 1795

三维重建笔记_光束平差法(Bundle Adjustment, BA)

目录 1 光束平差法(Bundle Adjustment, BA) 1.1 SFM (Structure‐from‐Motion) 定义 问题描述 1.2 重投影误差 (Reprojection Error) 目标函数 1.3 使用 Levenberg‐Marquardt Algorithm 进行优化 问题描述 简化目标函数 参考 Gauss‐Newton Method ...

惊鸿一博 2万+

Spring MVC 之 HttpMessageConverter

HttpMessageConverter 是Spring MVC 中非常重要的一个组件,它主要负责将 HTTP 请求中的请求参数转换为 Java 对象或将 Java 对象转换为 HTTP 响应中的内容。Spring MVC 中提供了很多HttpMessageConverter 实现类,可以处理不同的数据类型。

m88997766的博客 418

STM32+LoRa模块实战:从环境搭建到数据传输完整指南(附避坑清单)

本文提供STM32与LoRa模块从环境搭建到数据传输的完整实战指南,涵盖硬件连接、开发环境配置、AT指令设置、频段优化及低功耗设计等关键步骤,特别针对常见问题提供解决方案和避坑清单,助力物联网开发者高效实现远距离低功耗通信。

weixin_29168813的博客 290

用rsl_rl训练四足机器人走梅花桩:PPO算法调参实战与避坑指南

本文详细介绍了如何使用rsl_rl框架和PPO算法训练四足机器人在梅花桩上行走的实战经验。通过分析梅花桩场景的独特挑战,提供PPO算法关键参数配置策略、奖励函数设计方法以及常见问题的解决方案,帮助开发者高效实现机器人平衡控制。文章特别强调了仿真到实机的过渡技巧,最终实现98%的过桩成功率。

weixin_29103191的博客 220

第4章:Spring MVC基础(2)

4.4 Spring MVC基本配置 Spring MVC的定制配置需要我们的配置类继承一个WebMvcCongfigurerAdapter类,并在此类使用@EnableWebMvc注解,来开启对Spring MVC的配置支持,这样我们可以重写这个类的方法,完成我们的常用配置. 我们将前面的MyMvcConfig配置类继承WebMvcConfigurerAdapter,本章若不做特别说明,则关...

有梦想的咸鱼 292

[VT虚拟化驱动]安装DPC回调检测CPU对VT的支持

文章目录前言一、驱动基本框架二、安装DPC回调三、检测CPU对VT的支持本章代码def.h:DriverEntry.cpputil.cpp 前言 对于VT的介绍网上有很多详细的介绍,这里不再赘述,只需要知道它有比操作系统还高的权限,可以利用这一点进行某些操作,如内存隐藏, 无痕HOOK ,MSR HOOK, 调试或者反调试, 这里直奔主题 一、驱动基本框架 虚拟机设置里虚拟化引擎设置: 新建一个空的WDM工程,平台设置为x64平台,右键属性——>Inf2Cat——>Run Inf2Cat设置

吾无法无天的博客 3908

SpringMVC——HTTP消息转换

一、HttpMessageConverter  HttpMessageConverter<T>是Spring3.0后加的一个接口,负责将请求信息转换为对象(类型为T)和将返回的对象转换为响应信息。  HttpMessageConverter<T>接口中定义了如下方法:   1️⃣Boolean canRead(Class<?> clazz,MediaType ...

如不來的博客 458

实战指南:Qwen3-ASR-1.7B 语音识别

本文介绍了Qwen3-ASR语音识别模型的安装与使用。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1805

基于STM32L4XX、HAL库的MP2672GD-0000-Z充电芯片驱动程序设计

CHG_STAT_GPIO_Port, CHG_STAT_Pin, // 这些宏应由 CubeMX 生成在 main.h。

zhusl6688的博客 497

坑记(HttpInputMessage)

实现接口报文的监听和处理操作。在监听时,需分别实现相关的Advice类,以帮助完成自己的逻辑实现。这就厉害了,不阻塞,但是可能丢包…所以如果使用上述方法,读取请求body时,数据并不完整,会导致后续逻辑出现异常。如我们使用以上方式,读取请求报文数据时,可能产生。在实现接口的加密处理过程中, 我们一般选择使用。今天我们谈谈使用过程中可能遇到的问题。多看、多学、多试,总会找到解决的办法和途径。

splendid_java的专栏 2187

pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]‘ is not a valid editable requirement解决方案

本文主要介绍了pip install安装markitdown时出现ERROR: ‘packages/markitdown[all]’ is not a valid editable requirement解决方案,希望能对使用markitdown的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

SpringMVC: HttpMessageConverter消息转换器机制

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33711647的博客 222

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

在Spring框架中,HttpMessageConverter<T> 是一个泛型接口,它定义了将HTTP消息体转换为Java对象(T)和将Java对象(T)转换为HTTP消息体的方法

在Spring框架中,HttpMessageConverter 是一个泛型接口,它定义了将HTTP消息体转换为Java对象(T)和将Java对象(T)转换为HTTP消息体的方法。> clazz, MediaType mediaType): 检查该转换器是否能够读取特定类型的类(clazz)和媒体类型(mediaType)的HTTP消息体。总之,HTTP MVC框架是一种用于构建交互式应用程序的架构设计模式,通过将应用程序拆分为模型、视图和控制器三个部分,提高了代码的可维护性、可扩展性和可重用性。

[Blog][Domain] programb.blog.youkuaiyun.com 494

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【springboot】HTTPMessageConvertor源码分析原理

承接上一篇文章,还是按照之前的顺序来debug,先进入invokeAndHandle执行方法,可以看到this.returnValueHandlers是所有可以匹配的返回值处理器,通过supportsReturnType方法判断是否支持该类型的返回值后匹配到了目标的ReturnValueHandler,就可以执行它的handleReturnValue方法,也就是上篇文章中文末提到的处理返回值的方法handleReturnValue(),进入最内层的handleReturnValue方法。

m0_56249083的博客 950

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

自定义HttpMessageConverter

自定义HttpMessageConverter

mahl1990的博客 2055

SpringMVC的HttpMessageConverter(消息转换器)

首先说说我在阅读Spring官方文档遇到的三个不明确的地方, Type Conversion( 类型转换)、Content Type(内容类型) 、Message Converters(消息转换器) TypeConversion(类型转换器) 首先看看spring的官网怎么解释这个的: By default, formatters for various number and date types are installed, along with support for customization vi

five-five 5831

HttpMessageConverter逻辑梳理

本文目录结构: 一、快速了解的机制二、结合解读解析请求报文机制三、结合解读解析响应报文机制四、创建自定义HttpMessageConverter实现参数加解密一、快速了解的机制 快速过一遍相关代码(这里只摘取核心的代码,并注释方法作用,其余代码使用【…】省略,感兴趣的话可以自行查看源码) 其实核心流程就是根据parameter去匹配resolver,然后将具体的参数解析工作交给匹配到的resolver,resolver再将解析工作委托给converter 二、结合解读解析请求报文机制 根据paramet

xiaoming的博客 1310

整合SpringMVC之HttpMessageConverters

一.HttpMessageConverter简介 1.概述 现在我们进行web开发,一般都要设计成RESTful风格的API,通过json格式的数据进行交互。但是前端传入的 json 数据如何被解析成 Java 对象作为 API入参,后端返回结果又如何将 Java 对象解析成 json 格式数据返回给前端,在整个数据流转过程中,这是由谁来完成的呢? 其实这都是由HttpMessageConv...

qianfeng_dashuju的博客 1406

Spring MVC系列(8)-HttpMessageConverter之使用分析

HTTP报文 HTTP请求流程 HTTP超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程: (1)客户与服务器建立连接; (2)客户向服务器提出请求; (3)服务器接受请求,并根据请求返回相应的文件作为应答; (4)客户与服务器关闭连接。 HTTP报文 用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP报文叫请求报文,响应端的叫响应报文

记录知识、锤炼自我 1273

SpringMVC源码剖析(五)-消息转换器HttpMessageConverter

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33686714的博客 669

springMVC中框架对HttpMessageConverter的选择原理

@RequestBody, @ResponseBody 注解详解(转)引言:关于简述httpMessageConvert原理解释的帖子:https://blog.youkuaiyun.com/j080624/article/details/70245741,这个帖子中总结的让人疑惑,就是springMVC具体怎么去选择httpMessageConvert的,有句总结的话不好理解:Spring首先根据请求头或响...

zbajie001的博客 1万+

SpringMvc之HttpMessageConverter转换器

转载请标明出处:https://blog.youkuaiyun.com/victoylin/article/details/79831544点击打开链接HttpMessageConverter&lt;T&gt;也是面试中常被提起的基础知识点。下面,小林带你了解一下。HttpMessgaeConverter是Spring3.0之后新增的接口:消息转换器HttpMessageConverter是用来处理reque...

冲动的仔bb博客 1616

SpringMVC之HttpMessageConverter

HttpMessageConverter,又叫报文信息转换器,可以将请求报文转化为 Java 对象,或者将 Java 对象转化为响应报文。其中提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity。 目录 @RequestBody RequestEntity @ResponseBody(重要) @ResponseBody处理JSON 处理ajax @RestController注解 ResponseEnti.

qq_52951579的博客 890

springMVC消息转换器HttpMessageConverter

HttpMessageConverter是用来处理请求体和响应体里的数据的 请求体的表述一般就是一段字符串,当然也可以是二进制数据(比如上传~)。 响应体则是浏览器渲染页面的依据,对于一个普通html页面得响应,响应体就是这个html页面的源代码。 请求体和响应体都是需要配合Content-Type头部使用的,这个头部主要用于说明body中得字符串是什么格式的,比如:text,json,xml等...

clyu的博客 1356
上一篇: 【Spring】抽丝剥茧SpringMVC-ContentNegotiationManager
下一篇: 【Spring】抽丝剥茧SpringMVC-目录
北堂桓禧
博客等级 码龄10年 23粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值