springmvc 的json数据交互 - 哎幽的成长 - CSDN博客--和老师讲课相同
http://blog.csdn.net/u012373815/article/details/47208187

-----------------

1
json
数据交互

为什么要进行
json
数据交互

json
数据格式在接口调用中、
html
页面中较常用,
json
格式比较简单,解析还比较方便。

比如:
webservice
接口,传输
json
数据
.

springmvc
进行
json
交互

1
、请求的是
json
、输出
json
,要求请求的是
json
串,所以在前端页面中需要将请求的内容转成
json

不太方便

2
、请求的是
key/value
、输出
json
。此方法比较常用。

1.1.1
@RequestBody

作用:

@RequestBody
注解用于读取
http
请求的内容
(
字符串
)
,通过
springmvc
提供的
HttpMessageConverter
接口将读到的内容转换为
json

xml
等格式的数据并绑定到
controller
方法的参数上。

本例子应用:

@RequestBody
注解实现接收
http
请求的
json
数据,将
json
数据转换为
java
对象

1.1.2
@ResponseBody

作用:

该注解用于将
Controller
的方法返回的对象,通过
HttpMessageConverter
接口转换为指定格式的数据如:
json,xml
等,通过
Response
响应给客户端

本例子应用:

@ResponseBody
注解实现将
controller
方法返回对象转换为
json
响应给客户端

1.1.3
请求
json
,响应
json
实现:

1.1.3.1
环境准备

1.1.1
加载
json
转的
jar

Springmvc
默认用
MappingJacksonHttpMessageConverter

json
数据进行转换,
需要加入

jackson
的包
,如下:

springmvc
中使用
jackson
的包进行
json
转换(
@requestBody

@responseBody
使用下边的包进行
json
转),如下:

1.1.2
配置
json
转换器

在注解适配器中加入
messageConverters

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

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

1.4    json交互测试


1.4.1
输入json串,输出是json串


1.4.1.1      jsp页面

<scripttype="text/
JavaScript
"

src="${pageContext.request.contextPath}/js/
jquery
-1.4.4.min.js"></script>

要记得引用js

使用jquery的ajax提交json串,对输出的json结果进行解析。  Ajax 关键词 type   提交方法类型 ,url ,datatype   预期服务器返回的数据类型,

contentType  发送的数据的类型 ,   success  成功返回,

function
requestJson() {

//请求JSON输出json

$.ajax({

type:'post',

url:'${pageContext.request.contextPath}/requestJson.action',

contentType:'application/json;charset=utf-8',

data:'{"name":"手机","price":"999"}', //controller 的java代码中被转换为itemsCustom对象

success:
function
(data){

alert(data);

}

});

}


1.4.1.2      controller

@Controller

public class
JsonTest {

//请求
json
(商品信息)输出
json
(商品信息)

//@RequestBody 将请求的商品信息的
json
串转成ItemsCustom对象

//@ResponseBody 将ItemsCustom转换成
json
输出

@RequestMapping("/requestJson")

public
@ResponseBody ItemsCustomrequestJson(@RequestBodyItemsCustom itemsCustom){

//@ResponseBody 将ItemsCustom转换成
json
输出

return
itemsCustom;

}

}


1.4.1.3      测试结果


1.4.2
输入key/value,输出是json串


1.4.2.1      jsp页面

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

function
responseJson() {

//请求key/value输出json

$.ajax({

type:'post',

url:'${pageContext.request.contextPath}/responseJson.action',

//contentType:'application/json;charset=utf-8',  请求key/value默认是key/value 所以不用指定

data:'name=手机&price=999',

success :
function
(data){

alert(data);

}

});

}


1.4.2.2      controller

//请求key/value(商品信息)输出
json
(商品信息)

@RequestMapping("/responseJson")

public
@ResponseBody ItemsCustomresponseJson( ItemsCustom
itemsCustom
){  //这里就可以自动转换成itemsCustom 对象
了吗?

//@ResponseBody 将ItemsCustom转换成
json
输出

return
itemsCustom;

}


1.4.2.3      测试


1.2.3  小结

实际开发中常用第二种方法,请求key/value数据,响应json结果,方便客户端对结果进行解析。

摘自传智播客视频

标签: none

添加新评论