spring mvc自动封装前端发送的json数据绑定为指定对象
来源:互联网 发布:八爪鱼支架 知乎 编辑:程序博客网 时间:2024/06/06 09:50
1.问题场景
在前端用jQuery向后台发送json数据,然后在后台收到封装好的对象
2.代码示例
前端
$.ajax({ url:"XXXX", data:JSON.stringify(user),//user是一个json数据 type:"XXX", contentType: "application/json;charse=UTF-8", success:function (data) { }, error:function (err) { }});
注意
1.json数据必须用JSON.stringify()方法转换成字符串
2.contentType不能省略
后台
@RequestMapping(value = "xxxxx",method = RequestMethod.XXX)@ResponseBodypublic Msg methodName(@RequestBody User user) { logger.info("user:"+user); return Msg.success();}
注意
@RequestBody不可以省略
3.spring mvc封装json数据的原理分析
首先通过@RequestBody表明这个方法的参数应该被request的body绑定,即我们从前端传过去的json数据。而这个转换器就是:org.springframework.http.converter.HttpMessageConverter的一个实现类。在这里用的是阿里的fastjson来取代spring默认的Jackson进行数据绑定。(用fastjson最直观的优势就是如果属性为空就不会将其转化为json,数据会简洁很多)
第一步:在mvc配置文件中配置fastjson
<mvc:annotation-driven> <mvc:message-converters> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4"/> </mvc:message-converters></mvc:annotation-driven>
第二步:断点追踪请求的处理过程
请求在com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4#readInternal方法中进行处理。读取了请求的body内容,然后通过JSON.parseObject返回目标对象
protected Object readInternal(Class<? extends Object> clazz, // HttpInputMessage inputMessage //) throws IOException, HttpMessageNotReadableException { InputStream in = inputMessage.getBody(); return JSON.parseObject(in, fastJsonConfig.getCharset(), clazz, fastJsonConfig.getFeatures());}
阅读全文
0 0
- spring mvc自动封装前端发送的json数据绑定为指定对象
- spring mvc 自动封装json
- SPRING MVC 返回数据自动转换为JSON格式
- Spring MVC 对象中子对象的自动封装 异常处理
- 封装fastjson为spring mvc的json view
- 封装fastjson为spring mvc的json view
- spring MVC框架下Controller发送JSON格式的数据
- 封装Spring MVC 返回JSON 格式数据
- Spring http自动绑定JSON/对象
- Spring MVC的数据绑定
- Spring MVC 数据绑定多个对象
- spring mvc数据绑定
- spring mvc数据绑定
- spring mvc数据绑定
- Spring MVC 数据绑定
- Spring MVC-数据绑定
- spring mvc返回json格式到客户端,并且在Controller中自动将对象转换为json
- Spring MVC 数据绑定 之 对象里面有对象系列
- DVWA-master新手指南之Brute Force(一)
- OpenMV源码获取
- 解决springmvc请求丢失js等静态资源的方法
- linux内核设计与实现---中断和中断处理(7)
- Atitit 项目管理软件 在线服务 attilax总结 1. 项目管理协作的历史1 1.1. Worktile 406k1 1.2. Teambition 584k in baidu
- spring mvc自动封装前端发送的json数据绑定为指定对象
- 安装Grid执行root.sh出现ohasd failed解决方案
- 从零开始学习Linux之Linux安装
- [JZOJ5250]【GDOI2018模拟8.11】质数
- 数据库安全
- 左偏树自己的一点理解【hdu1512】【Monkey King】
- Android中的Apk的加固实现原理
- 从url提取key vale
- dm3730平台oled显示时钟——ssd1306驱动