spring mvc自动封装前端发送的json数据绑定为指定对象
2017-08-11 22:47
471 查看
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) @ResponseBody public 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()); }
相关文章推荐
- 利用Ajax把前端的数据封装成JSON格式发送到服务器端并写成XML格式在服务器的硬盘上
- spring mvc 接收json、xml 数据格式,自动解析成对象
- 用原生的AJax代码发送JSON数据到Action使其自动类型转化
- POI 导入excel数据自动封装成model对象--介绍
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- ASP.NET MVC之表单集合数据自动绑定到对象属性(集合)中
- Java Web控制层发送Json对象数据(二)
- Java DTO数据响应回前端时JSON对象中多出一些未知属性
- 前端将json数据解析成js对象失败
- PHP如何通过Http Post请求发送Json对象数据?
- POI 导入excel数据自动封装成model对象--代码
- spring mvc3(对象传参 Date 类型数据绑定)
- spring MVC中前端提交Form表单在controller中的数据绑定
- spring mvc 自动封装json
- 利用fastjson将map数据封装到对象中
- jQuery插件:Ajax将Json数据自动绑定到Form表单
- POI 导入excel数据自动封装成model对象--代码分析
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(下)
- SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)
- SpringMVC绑定ajax传递json数据到pojo对象错误(400 Bad Request)