文档章节

springmvc - json的数据交互

lemos
 lemos
发布于 2016/11/21 00:23
字数 523
阅读 37
收藏 0

一、为什么使用 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响应参数

© 著作权归作者所有

共有 人打赏支持
lemos
粉丝 6
博文 178
码字总数 90644
作品 0
芜湖
后端工程师
Android四款系统架构工具

Spring for Android   Spring for Android是Spring框架在Android平台上的扩展,旨在简化Android原生应用的开发流程,提高开发者的工作效率。Spring for Android可以帮助开发者简化应用与服...

zhwj407906450
2014/10/21
0
0
SpringMVC转换JSON数据(1)

SpringMVC提供了处理JSON格式请求/响应的 HttpMessageConverter:MappingJackson2HttpMessageConverter。利用Jackson开源类包处理JSON格式的请求或响应消息。 我们需要做的: 在Spring容器中为...

武小猪
06/26
0
0
AJAX与spring mvc交互

(1)简单交互: <table style="width: 100%" class="table" cellspacing="1" cellpadding="1" border="0"> <tr><td class="ti1" colSpan="2">请选择审讯室</td></tr> <tr><td class="ti2hu......

moz1q1
2014/08/28
0
0
项目开发总结

项目开发关键词: (设计层面) : 表设计 表间关系设计 (技术层面) : 不同数据类型的获取,转换,传递(字符型 , 数值型 , 日期型 , 文件型 ) 前端:(不同数据类型(字符型 , 数值型 , 日期型 , 文件...

noteman
2015/12/16
35
0
Spring Vault 2.0.2 发布,Spring 抽象和客户端支持

Spring Vault 2.0.2 已发布,主要包含 bug 修复和依赖更新,以及一些小的改进。 Provide a richer subclass strata of VaultException Release Spring Vault 2.0.1.RELEASE Upgrade to Vault......

王练
09/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux运维人员必会运维工具

linux运维人员必会开源运维工具体系 说明:不同的技术人员,不同的阶段确定知识边界非常重要,否则,就像马拉车,不知道终点在哪,累死也达不到目标。例如拿8K要学多少,拿15K要学多少。一个...

寰宇01
15分钟前
2
0
10大PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的 10个开源的Php比特币项目,将有助于你了解在自己的应用中 如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方...

汇智网教程
36分钟前
1
0
springclould feign客户端添加全局参数

用springclould feign作为调用服务的客户端,一般来说参数可以写在feignclient的方法参数里 有时需要所有feign请求都统一添加一些参数,例如token用于鉴权等,可以这样做: 添加一个配置类,...

canneljls
37分钟前
1
0
win32截屏并rgb24转yuv420

//最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int w, int h){ HWND hDesk = GetDesktopWindow(); HDC hScreen = GetDC(hDesk); ......

styleman
今天
1
0
php输出mysql取出的中文为??的问题

解决方法: @ $db=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DB); $db->query("set names utf8");//添加此语句,可以解决问题...

Aomo
今天
1
2

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部