SpringMVC返回JSON数据格式及HttpMessageConverter介绍

JSON处理和HttpMessageConverter<T> Java 在Spring MVC中,HttpMessageConverter扮演着重要的角色,用于处理请求和响应的数据格式转换。通过使用合适的HttpMessageConverter实现类,我们可以在Spring中方便地处理其他类型的数据格式,如XML或自定义格式。Java提供了多种处理JSON的方式,其中一个常用的方式是使用HttpMessageConverter接口来处理JSON数据的转换和序列化。列表中,以便Spring MVC在处理HTTP请求和响应时使用该转换器来处理JSON数据。来处理JSON数据。 阅读详情
一. 返回JSON数据格式

现在的开发中,几乎都是前后端分离的形式,越来越多的请求使用Ajax的异步请求,而不再是传统的跳转,使用Ajax异步请求之后,我们后端处理结果大多以JSON的形式进行响应,响应给前端,前端得到响应结果后,进行处理和渲染。在SpringMVC中,使用JSON非常的简单,SpringMVC中可以将集合等数据自动的转换成JSON数据格式,当然我们需要加入JSON相关的jar包。

jackson-annotations-2.1.5.jar

jackson-core-2.1.5.jar

jackson-databind-2.1.5.jar

范例:

前端发送Ajax异步请求:

$(function(){
	$("#sendAjax").click(function(){
		var url = "${pageContext.request.contextPath}/testJson";
		$.post(url,function(data){
			console.log(data);
		});
		

		return false;
	});

});

请求处理器的目标方法:

@ResponseBody //表示将请求处理器目标方法的返回值,作为响应结果,响应到页面
	@RequestMapping("/testJson")
	public List<Emp> selectEmp(){
		return empManagerSerivce.selectEmp();
	}

使用了@ResponseBody后,SpringMVC会自动的将响应到前端的数据转换成JSON格式。

二. HttpMessageConverter原理

HttpMessageConverter是Spring3.0之后添加的一个新的接口,负责将请求信息转换成一个对象,也负责将一个对象转换为响应信息。

流程:

三. HttpMessageConverter的使用
  1. 使用HttpMessageConverter将请求信息转换并绑定到处理器目标方法的入参或者将响应结果转化为对应的类型响应信息,Spring提供了两种途径:
  • 使用@RequestBody/@ResponseBody 对请求处理器目标方法进行注解
  • 使用HttpEntity/ResponseEntity作为请求处理器目标方法的入参和返回值
  1. 当请求处理器方法出使用到@RequestBody/@ResponseBody或者HttpEntity/ResponseEntity的时候,SpringMVC首先根据请求头或者响应头的Accept属性选择匹配的HttpMessageConverter,进而根据参数类型或者泛型的类型的过滤得到匹配的HttpMessageConverter,如果找不到,则报错。

  2. 我们的@RequestBody/@ResponseBody 或HttpEntity/ResponseEntity不需要成对出现。

  3. @RequestBody 和 目标方法入参为HttpEntity 效果一样,@ResponseBody 和目标方法返回值为ResponseEntity效果一样。

  4. @ResponseBody使用在方法上,@RequestBody 在入参前注解

范例:使用ResponseEntity作为返回值,完成JSON数据的响应:

	@RequestMapping("/testJson")
	public ResponseEntity<List<Emp>> selectEmp(){
		
	List<Emp> list = this.empManagerSerivce.selectEmp();//查询数据
	
	ResponseEntity<List<Emp>> responseEntity = new ResponseEntity<>(list,HttpStatus.OK);//准备响应数据
	
	return responseEntity;
}

和@ResponseBody注解 的效果一样,那么在开发中,一般使用第一种途径,也就是注解方式。

范例:@RequestBody 使用,读取文件内容

前端请求界面:

<form action="${pageContext.request.contextPath}/testRequestBody" method="post" enctype="multipart/form-data">
		File:<input type="file" name="file">
		<br>
		Desc:<input type="text" name = "desc">
		<br>
		<button>Submit</button>
	</form>

请求处理器的目标方法:

@ResponseBody
	@RequestMapping("testRequestBody")
//	public String testRequestBody(@RequestBody String body) {
	public String testRequestBody(HttpEntity<String> httpEntity) {
		System.out.println(httpEntity.getBody());
		return "Hello World";
	}
小结

在返回JSON格式的数据的时候,必须要加入JSON开发包,然后在DispatcherServlet中才会存在JSON的消息转换器;

对于HttpMessageConverter,我们要知道使用**@RequestBody注解目标方法的入参**、使用@ResponseBody注解目标方法,表示指定请求内容或者是相应内容到底使用哪个消息转换器。

对于HttpEntity和ResponseEntity只不过是@RequestBody 和@ResponseBody 的不同写法,这两个类需要指定泛型,此泛型就表示调用哪个对应的消息转换器。

Unity3d实现的十字路口的模拟(一) 最近学习了Unity3d这个游戏引擎,感觉真的是非常的强大,正好赶上操作系统课程要做一个模拟信号量的模拟程序,于是打算做一个模拟十字路口的程序,大致的实现要实现的成果是:存在四种不同的汽车,包括一辆警车(不受交通信号灯的控制)随机产生在不同的路口,并且有不同的行动路线如:直走,左转,右转等,当然还有交通信号灯来控制车辆的有序运行。可以展示不同的视角来观察路口的情况(利用Q,W,E,R分别控制不同的 阅读详情

相关推荐

【数据分享】中国371个城市的坡度矢量数据和excel数据

在城市发展的进程中,地形地貌始终是影响规划决策的关键因素,而坡度作为表征地表倾斜程度的核心指标,更是贯穿于城市建设、生态保护等诸多环节。本文将全面解读中国 371 个城市坡度数据的相关情况,包括数据概况、生成流程、应用场景等内容,为读者呈现一份详尽的坡度数据指南。

qq_39719713的博客 1844

SpringBoot 2.0 自定义HttpMessageConverter处理返回json格式

SpringBoot在controller方法使用@ResponseBody将输出解析为json格式数据,它默认使用jackson来序列化json,实现类是MappingJackson2HttpMessageConverter.java,下面用fastjson来自定义输出json。 导包 <dependency> <groupId>com.alib...

菜鸟日记 2085

基于ST32 DAC7311数模转换器驱动代码及电路设计完整版

基于ST32的DAC7311模数转换器的电路设计及驱动代码完整版

qq_39626643的博客 3720

【SpringBoot3】Spring 请求处理流程,自定义返回类型处理(HttpMessageConverter)

Spring MVC 架构,以下是处理流程: 1、客户端发送请求。 2、DispatcherServlet 接收请求。 3、HandlerMapping 进行映射,找到处理请求的 Controller。 4、Controller 方法处理请求。 5、数据绑定与验证(如果有的话)。 6、返回数据或视图给 DispatcherServlet。 7、ViewResolver 解析视图:如果返回的是视图名。 8、视图渲染,生成最终的响应结果。 9、DispatcherServlet 将最终的响应返回给客户端,请求

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 2388

汽车OTA安全启动:ECU双验签机制与实战排障指南

汽车OTA升级中的安全启动,本质是基于密码学的信任建立过程,其核心在于ECU上电时对固件镜像的可信验证。该机制依托硬件信任根(Secure Boot ROM),通过RSA/ECDSA等非对称算法完成签名验签,确保升级包未被篡改且来源可信。技术价值体现在防止恶意固件注入、支撑功能安全(ASIL)与信息安全(ISO/SAE 21434)合规。典型应用场景包括4S店远程升级、BMS控制器固件更新及多ECU协同启动。实践中,验签名失败往往源于证书链断裂、Flash布局错位或KeyUsage字段不匹配等底层工程细节,

weixin_29314405的博客 77

【网络】PFC背景和原理 、文档(DCB=PFC + ETS,DCBX=DCB扩展)

目录 零、背景 一、PFC 1.概述 2.报文格式 3.工作机制 二、ETS 产生原因 基本原理 优先级组的调度 优先级的调度 三、DCBX 产生原因 基本原理 DCBX TLV介绍 五、PFC 拥塞研究(文档收集) 六、DC-QCN算法 (网络工程师必会) 7.1 α更新 7.2 降速 7.3 提速 8.总结 ...

小鱼菜鸟的博客 2165

Spring boot -- 学习HttpMessageConverter

至此,可以说算是明白为什么返回Json格式数据了:我们给服务器说,接收*/*格式数据的response。默认的HttpMessageConverter把JAVA对象转成了Json格式写入response body中。返回自定义格式的数据,就是要和服务端约定好,是什么样的格式,然后有converter写出来即可。从上面的类图可以看到,我们可以直接实现HttpMessageConverter接口,也可以继承类图里的抽象类也可以。import com。

圆师傅的博客 1718

RV1126B芯片实战:如何用这款视觉处理器SoC打造你的第一个AI摄像头项目

本文详细介绍了如何利用瑞芯微RV1126B视觉处理器SoC从零构建AI摄像头项目。涵盖硬件选型、开发环境搭建、ISP配置、AI模型部署及系统集成等关键步骤,帮助开发者高效实现边缘计算方案,特别适合智能安防和工业检测应用。

dropout6artist的博客 931

使用HttpMessageConverter处理JSON

HttpMessageConverter<T>工作原理:  HttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T)并绑定到处理方法的入参中,或将对象(类型为T)输出为响应信息。对此SpringMVC提供了两种实现途径: 使用@RequestBody/@ResponseBody注解对处理方法进行标注。 使用HttpEntit

Alan_Xiang的博客 3427

MMRotate 详细使用教程

MMRotate 详细使用教程 做旋转目标检测,怎么可以不知道如何使用MMRotate呢! github链接: https://github.com/open-mmlab/mmrotate 1 安装 创建虚拟环境并激活 conda create -n mmrotate python=3.7 -y conda activate mmrotate 安装 PyTorch 和 torchvision conda install pytorch torchvision -c pytorch 注意:确保

Sylvia_Lan的博客 1万+

Altium Designer(AD)仿真实验操作指南

1:运行仿真2:设置仿真3:放置电源模块4:放置器件模块5:探针。

XU157303764的博客 8900

SpringMVC 工作原理五(返回值处理器)

在一文中,我们分析了 Spring MVC 如何将请求中的参数解析为调用目标方法的参数,然后利用反射调用目标方法获得返回值;那么在目前普遍为前后端分类的开发场景中,Spring MVC 是如何将标注了 @ResponseBody或 @RestController 注解的方法返回数据格式转换为 JSON 格式的,这是本文将分析的。

m0_61556498的博客 1220

CVPR 2026 即插即用 | 注意力篇 | MSEF:超轻注意力,空间-通道双分支并行融合,既增强特征又抑制噪声!

Multinex提出了一种超轻量级微光图像增强框架,其核心创新是MSEF模块。MSEF采用双分支并行架构,结合空间局部特征(深度可分离卷积)和全局通道注意力(改进SE),通过Tanh激活实现特征增强与抑制。相比传统注意力模块,MSEF在几乎不增加计算量的情况下显著提升性能,特别适合轻量级网络和边缘设备部署。实验表明,该模块能有效提升PSNR约3dB,同时保持极低的参数量(0.7K-45K)。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 604

pringmvc响应 ajax 返回不同的值

框架提供了通用的功能 1.框架可以把处理器方法的返回值对象转为所需的数据格式,例如把Student转为json //student转为json ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(student); 2.框架可以把转换后的数据(json,xml等)输出到浏览器 //输出...

rdz_NNN的博客 218

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringMVC_数据绑定流程分析(笔记)

提出问题 日期字符串格式的表单参数,提交后转换为Date类型 <!-- 解决问题: 1.数据类型转换 2.数据格式 3.数据校验 --> BirthDay :<form:input path="birthDay"/> Employee类中增加日期类型属性: //关于类型转换 private Date birthDay ; 数据绑定流程原理★ Spring M...

baidu_41924165的博客 362

VB摄像头监控

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

SpringMVC之HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,以上就是SpringMVC之HttpMessageConverter的相关知识点,希望对你有所帮助。积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

哥的时代,为你保驾护航 1539

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringMVC中Json数据格式转换

SpringMVC中Json数据格式转换 1 @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。 List.action?id=1&name=zhangsan&age=...

Retank的博客 683

springMVC-处理json和HttpMessageConverter<T>

springMVC-处理json和HttpMessageConverter<T>

qq_36684207的博客 973

【SpringMVC】springmvc处理JSON

关于 json ,来看看

Le vent se lève, il faut tenter de vivre 1225

springMVC之HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity。以上就是HttpMessageConverter有关讲解。

浩泽学编程的博客 1430

Springmvc前端JSON转换器MappingJackson2HttpMessageConverter设置对值为null的处理

我们在使用springmvc中的 @ResponseBody 注解返回JSON时可以配置Json转换器如下: <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

筑梦者 4万+

在springmvc中使用对象转换器MappingJackson2HttpMessageConverter将数据转为Json格式返回

1.添加依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.5.4&l...

csdnLeraner的博客 2026

springMVC中框架对HttpMessageConverter的选择原理

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

zbajie001的博客 1万+

SpringMVC8-HttpMessageConverter

HttpMessageConverter,报文信息转换器,将请求报文转换为Java对象或将Java对象转换为响应报文HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity

m0_73902080的博客 913

Spring Boot 自定義 HttpMessageConverter 解決 String 類型返回JSON對象問題

引言 前端传入的 json 数据如何被解析成 Java 对象作为 API入参,API 返回结果又如何将 Java 对象解析成 json 格式数据返回给前端,其实在整个数据流转过程中,HttpMessageConverter 起到了重要作用;另外在转换的过程我们可以加入哪些定制化内容? 源代碼 核心邏輯代碼: // 对于String类型的,直接 append 返回,不转json ...

AI天才研究院 9459

Springmvc返回json

前言 我们知道 springmvc作为一个controller层的框架;为了方便jsp的使用,让我们返回一个ModelAndView,而我们实际上为了在更多地方去使用(web,android,ios),我们实际上更多的是返回一个json串,这样我们在各种平台上都能使用这些数据了;然后稍微去研究了一下找到spring提供了两种可以使用的适配器: MappingJackson2HttpMessag...

a137284899的博客 886
上一篇: SpringMVC显示错误消息以及错误消息格式化
下一篇: SpringMVC进行文件下载
胖头鱼小子
博客等级 码龄6年 10粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值