springmvc - json的数据交互
springmvc - json的数据交互
中柠檬 发表于1年前
springmvc - json的数据交互
  • 发表于 1年前
  • 阅读 28
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

一、为什么使用 json

json 数据格式在接口调用中、html页面中较常用,json数据结构简单,解析方便。 比如,webservice接口,传输json数据。

二、springmvc 中进行json交互

输入图片说明

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

三、.配置json转换器

注意:如果使用的是注解驱动标签,则不需要手动配置:

<mvc:annotation-driven conversion-service="conversionService" validator="validator"/> 

否则,需要在注解适配器中加入messageConverters。

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

四、json交互测试

jsonTest.jsp

<html>
<head>
    <title>json交互测试</title>
    <%-- 导入js外部文件 --%>
    <script language="JavaScript" src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script>
    <%-- 自定义js函数--%>
    <script language="JavaScript">
        function requestJson() {
            $.ajax({
                type: 'post',
                url: '${pageContext.request.contextPath}/requestJson.action',
                contentType: 'application/json;charset=utf-8',
                data: '{"name":"手机","price":999}',
                success: function (data) {
                    alert(data.name);
                }
            });
        }

        function responseJson() {
            $.ajax({
                type: 'post',
                url: '${pageContext.request.contextPath}/responseJson.action',
                data: 'name=手机&price=999',
                success: function (data) {
                    alert(data.name);
                }
            });
        }
    </script>
</head>
<body>
<input type="button" onclick="requestJson()" value="请求json,输出json"/>
<input type="button" onclick="responseJson()" value="请求key/value,输出json"/>
</body>
</html>

jsonTest.java

@Controller
public class JsonTest {

    //第一个@ResponseBody,将页面商品信息的json转成itemsCustom对象
    //第二个@ResponseBody,把返回的itemsCustom对象转成json串输出。
    @RequestMapping("requestJson")
    public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom) {
        return itemsCustom;
    }

    //输入是key/value ,输出是 json数据
    @RequestMapping("responseJson")
    public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom) {
        return itemsCustom;
    }
}

区别

  1. application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
  2. multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
  3. 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

**测试结果: **

1.使用jquery 的ajax 提交json串,对输出的json结果进行解析。

json 请求参数:
json请求参数

json 响应参数:
json响应参数

2.使用jquery 的ajax 提交key/value 串,对输出的json结果进行解析。

key/value 请求参数:
key/value 请求参数

json 响应参数:
json响应参数

  • 点赞
  • 收藏
  • 分享
粉丝 6
博文 177
码字总数 83824