视频教程地址:http://edu.51cto.com/sd/2cfc2
springMVC中和json的交互:主要分为两点,一是传递过来的是json字符串,springMVC会先进行解析,二是传递过来的是key:value那么springMVC可以不进行解析,这里的解析指的是json和java对象之间的转换
java对象:就是实体类的对象
首先先来看一张交互的图:
分析:
1.从这个图中我们可以看出来,前台请求的数据如果是json字符串,我们需要用@RequestBody先将json字符串转成java对象,然后前台传输的是java对象的时候就需要用@ResponseBody将我们的java对象,转成json格式的字符串,这样页面才可以解析
代码实现比较简单:
jar包记得导入(json的几个包)
前台页面用(jquery实现)点击一个按钮,发起一个ajax请求,传输json数据到后台:
<script type="text/javascript" src="js/jquery-2.2.2.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#json").click(function() { $.ajax({//ajax请求 type : 'post',//请求方法 url : 'test_json',//请求路径 contentType : 'application/json;charset=utf-8',//指定传送json格式数据,并指定编码 data : '{"sid":"1","name":"老白","sex":"女"}',//json格式数据 success : function(data) {//回调函数 alert(data.name); } }); }); }); </script>
后台控制器:后台控制在接收的参数中要先用@RequestBody先把json数据转成java对象,然后返回java对象的时候要用@ResponseBody将java对象转成json格式数据。
@RequestMapping(value="/test_json") @ResponseBody public Student test_json(@RequestBody Student stu){ return stu; }
2.第二种方式就是请求的是key:value的字符串,那么在控制器在接收的时候就不需要用到@RequestBody,但是你返回的是java对象,就需要用@ResponseBody将java对象转成json格式数据。实现起来的代码和上面类似,直接贴代码,不解释了。
页面发起请求代码:
<script type="text/javascript"> $(document).ready(function() { $("#key").click(function() { $.ajax({ type : 'post', url : 'test_key', //contentType : 'application/json;charset=utf-8', data : 'name=白&sex=nan', success : function(data) { alert(data); } }); }); }); </script>
控制器处理代码:
@RequestMapping(value="/test_key") @ResponseBody public Student test_key(Student stu){ return stu; }