欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC学习之json数据交互

程序员文章站 2024-01-12 20:10:46
...

为什么要进行json数据交互

json数据格式在接口调用中、html页面中较常用,json格式较简单,解析起来比较方便。
比如:webservice接口,传入json数据、xml等。。


springmvc进行json交互

 SpringMVC学习之json数据交互
1、请求的是json,输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便
2、请求的是key\value 输出json,此方法比较常用。

环境准备

1、加入jar包

springmvc中使用jackson的包进行json转换(@RequestBody和@ResponseBody)
SpringMVC学习之json数据交互
将其加入到项目的librery中

2、配置json转换器

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

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



json交互测试

1、输入json串,输出json串


jsp页面:
使用jquery的ajax提交json串,对输出的controller方法的结果进行解析
<%--
  Created by IntelliJ IDEA.
  User: Alex
  Date: 2017/6/29
  Time: 21:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>json交互数据测试</title>
    <script src="../../js/jquery-1.4.4.min.js" type="text/javascript" />
    <script type="text/javascript">
        //请求的是json,输出的是json
        function requsetJson(){
            $.ajax({
                type:'post',
                url: '${pageContext.request.contextPath}/requestJson.action',
                contentType:'application/json;charset=utf-8',
                //数据格式是json串
                data:'{"name":"手机","price":"999"}',
                success:function(data){
                    //返回json结果
                    alert(data);
                }
            });
        }
        //请求的是key\value,输出的是jaon
        function responseJson(){}

    </script>
</head>
<body>
<input type="button" onclick="requsetJson()" value="请求json,输出json" />
<input type="button" onclick="responseJson();" value="请求key\value,输出json" />
</body>
</html>

controller:
@Controller
public class JsonTest {
    //请求json(商品信息),输出响应json(商品信息)
    //@RequestBody 将请求的商品信息的json串转成itemsCustom对象
    //@ResponseBody 将itemsCustom对象转成json输出
    @RequestMapping("/requestJson")
    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom) throws Exception{
        //@ResponseBody 将itemsCustom转成json输出
        return itemsCustom;
    }
}

测试结果:
SpringMVC学习之json数据交互

2、输入key/value , 输出json串(常用)

jsp页面:
使用jquery的ajax提交json串,对输出的controller方法的结果进行解析

        //请求的是key\value,输出的是jaon
        function responseJson(){
            $.ajax({
                type:'post',
                url: '${pageContext.request.contextPath}/responseJson.action',
                //请求的是key\value这里不需要特意指定contentType,因为默认就是key\value类型
//              contentType:'application/json;charset=utf-8',
                //数据格式是json串
                data:'name=手机&price=999',
                success:function(data){
                    //返回json结果
                    alert(data);
                }
            });
        }


Controller:
    @RequestMapping("/responseJson")
    public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom) throws Exception{
        //@ResponseBody 将itemsCustom转成json输出
        return itemsCustom;
    }

测试:


SpringMVC学习之json数据交互