springMVC实现JSON交互

来源:互联网 发布:苏州收银软件sjzpos 编辑:程序博客网 时间:2024/05/20 01:11

1、 为什么要进行JSON数据交互
JSON 数据格式在接口调用中、html页面中比较常用。
JSON格式比较简单,解析比较方便。
比如:webservice接口、传输JSON数据。

2、springMVC进行JSON交互
这里写图片描述

1、 请求JSON、输出JSON,要求请求的是JSON串,需要在前端页面将请求内容转成JSON,不太方便。
2、 请求key/value、输出JSON。此方法比较常用。

3、 环境准备
3.1加载JSON的jar包
springMVC中使用Jackson的包进行JSON转换(@requestBody和@responseBody使用下面的包进行JSON转换),如下:
这里写图片描述

3.2 配置JSON转换器
在注解适配器中加入messageConverters

<!-- 注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">    <property name="messageConverters"></property>    <list>        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>        </list>    </bean>

注意:如果使用<mvc:annotation-driven/>则不用定义上边的内容。

4、 JSON交互测试
4.1输入的是JSON串,输出是JSON串
JSP页面
使用Jquery的ajax提交JSON串,对是输出的JSON结果进行解析。

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>      <script type="text/javascript">    //请求的JSON,输出JSON    function requestJson(){        $.ajax({            type:'post',            url:'requestJson.action',            contentType:'application/json;charset=utf-8',            //数据格式是JSON串,商品信息            data:'{"name":"手机","price":999}',            success:function(){//返回JSON结果                alert(data .name);            }        });    }</script><input type="button" onclick="requestJson()" value="请求的JSON,输出JSON"/>     <input type="button" onclick="responseJson()" value="请求key/value,输出JSON"/>

Controller

//请求JSON(商品信息),输出JSON(商品信息)    //@RequestBody将请求的商品信息的JSON串转成itemsCustom对象    //@ResponseBody将itemsCustom对象转换成JSON输出    @RequestMapping("/requestJson");    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){        //@ResponseBody将itemsCustom转成JSON输出        return itemsCustom;    }

4.2输入key/value,输出是JSON串

JSP页面使用Jquery的ajax提交key/value串,对是输出的JSON结果进行解析。
function responseJson(){     $.ajax({            type:'post',            url:'responseJson.action',            //请求是key/value这里不需要contentType,因为默认就是key/value类型            //contentType:'application/json;charset=utf-8',            //数据格式是JSON串,商品信息            data:'name=手机&price=999',            success:function(){//返回JSON结果                alert(data .name);            }        });    }

Controller

//请求key/value(商品信息),输出JSON(商品信息)    @RequestMapping("/responseJson");    public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){        //@ResponseBody将itemsCustom转成JSON输出        return itemsCustom;    }
原创粉丝点击