SpringMVC学习之json数据交互

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjnmbb12/article/details/73927812

为什么要进行json数据交互

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


springmvc进行json交互

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

环境准备

1、加入jar包

springmvc中使用jackson的包进行json转换(@RequestBody和@ResponseBody)

将其加入到项目的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;
    }
}

测试结果:


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;
    }

测试:






猜你喜欢

转载自blog.csdn.net/fjnmbb12/article/details/73927812