springmvc 的json数据交互 - 哎幽的成长 - CSDN博客--和老师讲课相同
http://blog.csdn.net/u012373815/article/details/47208187javascript
-----------------html
json数据格式在接口调用中、html页面中较经常使用,json格式比较简单,解析还比较方便。前端
好比:webservice接口,传输json数据.java
1、请求的是json、输出json,要求请求的是json串,因此在前端页面中须要将请求的内容转成json,不太方便。jquery
2、请求的是key/value、输出json。此方法比较经常使用。web
做用:ajax
@RequestBody注解用于读取http请求的内容(字符串),经过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。spring
本例子应用:json
@RequestBody注解实现接收http请求的json数据,将json数据转换为java 对象服务器
做用:
该注解用于将Controller的方法返回的对象,经过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,经过Response响应给客户端
本例子应用:
@ResponseBody注解实现将controller方法返回对象转换为json响应给客户端
Springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,须要加入jackson的包,以下:
springmvc中使用jackson的包进行json转换(@requestBody和@responseBody使用下边的包进行json转),以下:
在注解适配器中加入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>
注意:若是使用<mvc:annotation-driven /> 则不用定义上边的内容。
<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);
}
});
}
@Controller
public classJsonTest {
//请求json(商品信息)输出json(商品信息)
//@RequestBody 将请求的商品信息的json串转成ItemsCustom对象
//@ResponseBody 将ItemsCustom转换成json输出
@RequestMapping("/requestJson")
public @ResponseBody ItemsCustomrequestJson(@RequestBodyItemsCustom itemsCustom){
//@ResponseBody 将ItemsCustom转换成json输出
return itemsCustom;
}
}
使用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);
}
});
}
//请求key/value(商品信息)输出json(商品信息)
@RequestMapping("/responseJson")
public @ResponseBody ItemsCustomresponseJson( ItemsCustom itemsCustom){ //这里就能够自动转换成itemsCustom 对象了吗?
//@ResponseBody 将ItemsCustom转换成json输出
return itemsCustom;
}
实际开发中经常使用第二种方法,请求key/value数据,响应json结果,方便客户端对结果进行解析。
摘自传智播客视频