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消息转换器相关推荐

  1. springMVC消息转换器HttpMessageConverter

    前言 为何需要消息转换器 HttpMessageConverter是用来处理request和response里的数据的. 请求和响应都有对应的body,而这个body就是需要关注的主要数据. 请求体的 ...

  2. java注解返回不同消息,SpringMVC源码剖析5:消息转换器HttpMessageConverter与@ResponseBody注解...

    转自 [SpringMVC关于json.xml自动转换的原理研究[附带源码分析]](https://www.cnblogs.com/fangj... 部分代码会放在我的的Github:https:// ...

  3. SpringMVC自定义配置消息转换器踩坑总结

    问题描述 最近在开发时候碰到一个问题,springmvc页面向后台传数据的时候,通常我是这样处理的,在前台把数据打成一个json,在后台接口中使用@requestbody定义一个对象来接收,但是这次数 ...

  4. 在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码

    在 springmvc.xml 中配置消息转换器处理 ResponseBody 中文乱码 <mvc:annotation-driven><!-- 消息转换器 --><mv ...

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

    概述 在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新 ...

  6. json txt格式转换器_SpringBoot项目中如何定制HTTP消息转换器

    本文首发于个人网站:Spring Boot项目中如何定制HTTP消息转换器,如需转载,请注明来源 在构建RESTful数据服务过程中,我们定义了controller.repositories,并用一些 ...

  7. 【Spring学习笔记-MVC-1.3】消息转换器HttpMessageConverter

    作者:ssslinppp       参考链接: SpringMVC源码剖析(五)-消息转换器HttpMessageConverter: http://my.oschina.net/lichhao/b ...

  8. (配置消息转换器) sso单点登入之jsonp改进版

    原: 后台controller中 需要 返回 [ callback(json数据)] 改进的做法: 改进后所有 后台controller中的接口返回参数不用做任何改变: 之前的格式是需要 返回 [ c ...

  9. (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题

    (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题 SpringMVC.xml中加 <!-- 配置消息转换器(解决中文乱码问题)--><mvc:annotati ...

最新文章

  1. 爬虫准备工作1-Java写入字符串到txt文档
  2. NUC1429 WERTYU【输入输出】
  3. [ARM-assembly]-ARM ASM内联汇编学习
  4. mysql 南邮ctf_南邮ctf web
  5. 【Linux】一步一步学Linux——tail命令(42)
  6. 如何处理几十万条并发数据_Swoole 如何处理高并发以及异步 I/O 的实现
  7. defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...
  8. C语言输出空格逐级递减,2021年计算机2级c语言笔试部分-20210514115908.doc-原创力文档...
  9. Mongodb05 - 数据操作(删除、游标)
  10. 树莓派系列五:openCV之火焰检测(一)
  11. Chrome浏览器浅析
  12. 数学建模 —— 规划模型
  13. moviepy音视频开发:音频合成类AudioArrayClip介绍
  14. Ubuntu关于串口的操作(查看串口信息、串口助手、串口权限)
  15. python循环语句打印三角形_python循环输出三角形图案的例子
  16. WebApp 安全风险与防护课堂(第二讲)开课了!
  17. 职场上,不知道这些,活该工资比人低一倍
  18. 推荐几个好用的IDEA插件_让你解放双手的秘密
  19. Android高级图片滚动控件,编写3D版的图片轮播器
  20. 应届生春招/校招求职必备的C/C++面试题

热门文章

  1. C# HttpUtility.UrlEncode 与 Java URLEncoder.encode的转换方法,李逵与李鬼
  2. 交换机短路_通信设备工程安装施工规范
  3. TB6600HG原理图
  4. Windows系统密码抓取与防护
  5. 动态密码算法介绍与实现 1
  6. 在Linux上通过IPIP实现IP隧道
  7. “GANs 之父”Goodfellow亲身传授:深度学习未来的8大方向和入门AI必备的三大技能
  8. 【仿真】Carla世界的时间 [2]
  9. [Unity Mirror] 权威
  10. PSP2000 USB视频输出到电脑!图文教程!