SpringMVC消息转换器
SpringMVC自定义消息转换器
1. 目的
本篇主要是解决Long类型数据长度大于17位在传输到前段JS中精度丢失问题
2. 原因分析
2.1 数据库
通过下图可以看到数据库中姓名为:test用户的id为 : 1480420270175735809
2.2 控制台
通过控制台查看页面传递过来员工的id值和数据库中的id值不一致: 1480420270175735800
2.3 为什么?
- 通过上面的观察,可以看到在服务器端,通过java对象转为JSON为序列化操作,员工ID是一个Long类型的长整形数据,而且是一个长度为19为的长整型数据,该数据返回前段是没有问题的。
- 问题出现在了前段JS中,JS在对较长的长整型数据处理的时候会出现精度丢失问题。从而导致数据的ID和提交的id不一致。
3. 解决方案
让long类型的数据,不直接转换为数字类型,而是转换为字符串类型,就可以解决该问题。由于在SpringMVC中,java对象转JSON对象是通Jackson实现的,涉及到SpringMVC中的消息转换器MappingJackson2HttpMessageConverter,所以要解决该问题,需要对消息转换器功能进行拓展。
3.1 对象转换器
- 自定义的对象转换器,主要指定了,进行JSON数据序列化及反序列化时,LocalDateTime,LocalDate,LocalTime的处理方式,以及BigInteger及Long类型数据,直接转换为字符串。
3.2 在WebMvcConfig中重写方法
SpringMVC消息转换器相关推荐
- springMVC消息转换器HttpMessageConverter
前言 为何需要消息转换器 HttpMessageConverter是用来处理request和response里的数据的. 请求和响应都有对应的body,而这个body就是需要关注的主要数据. 请求体的 ...
- java注解返回不同消息,SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解...
转自 [SpringMVC关于json.xml自动转换的原理研究[附带源码分析]](https://www.cnblogs.com/fangj... 部分代码会放在我的的Github:https:// ...
- SpringMVC自定义配置消息转换器踩坑总结
问题描述 最近在开发时候碰到一个问题,springmvc页面向后台传数据的时候,通常我是这样处理的,在前台把数据打成一个json,在后台接口中使用@requestbody定义一个对象来接收,但是这次数 ...
- 在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码
在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码 <mvc:annotation-driven><!-- 消息转换器 --><mv ...
- SpringMVC源码剖析(五)-消息转换器HttpMessageConverter
概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新 ...
- json txt格式转换器_SpringBoot项目中如何定制HTTP消息转换器
本文首发于个人网站:Spring Boot项目中如何定制HTTP消息转换器,如需转载,请注明来源 在构建RESTful数据服务过程中,我们定义了controller.repositories,并用一些 ...
- 【Spring学习笔记-MVC-1.3】消息转换器HttpMessageConverter
作者:ssslinppp 参考链接: SpringMVC源码剖析(五)-消息转换器HttpMessageConverter: http://my.oschina.net/lichhao/b ...
- (配置消息转换器) sso单点登入之jsonp改进版
原: 后台controller中 需要 返回 [ callback(json数据)] 改进的做法: 改进后所有 后台controller中的接口返回参数不用做任何改变: 之前的格式是需要 返回 [ c ...
- (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题
(配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题 SpringMVC.xml中加 <!-- 配置消息转换器(解决中文乱码问题)--><mvc:annotati ...
最新文章
- 爬虫准备工作1-Java写入字符串到txt文档
- NUC1429 WERTYU【输入输出】
- [ARM-assembly]-ARM ASM内联汇编学习
- mysql 南邮ctf_南邮ctf web
- 【Linux】一步一步学Linux——tail命令(42)
- 如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现
- defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...
- C语言输出空格逐级递减,2021年计算机2级c语言笔试部分-20210514115908.doc-原创力文档...
- Mongodb05 - 数据操作(删除、游标)
- 树莓派系列五:openCV之火焰检测(一)
- Chrome浏览器浅析
- 数学建模 —— 规划模型
- moviepy音视频开发:音频合成类AudioArrayClip介绍
- Ubuntu关于串口的操作(查看串口信息、串口助手、串口权限)
- python循环语句打印三角形_python循环输出三角形图案的例子
- WebApp 安全风险与防护课堂(第二讲)开课了!
- 职场上,不知道这些,活该工资比人低一倍
- 推荐几个好用的IDEA插件_让你解放双手的秘密
- Android高级图片滚动控件,编写3D版的图片轮播器
- 应届生春招/校招求职必备的C/C++面试题
热门文章
- C# HttpUtility.UrlEncode 与 Java URLEncoder.encode的转换方法,李逵与李鬼
- 交换机短路_通信设备工程安装施工规范
- TB6600HG原理图
- Windows系统密码抓取与防护
- 动态密码算法介绍与实现 1
- 在Linux上通过IPIP实现IP隧道
- “GANs 之父”Goodfellow亲身传授:深度学习未来的8大方向和入门AI必备的三大技能
- 【仿真】Carla世界的时间 [2]
- [Unity Mirror] 权威
- PSP2000 USB视频输出到电脑!图文教程!