掌握SpringMVC-JSON数据交互
掌握SpringMVC-JSON数据交互
主要内容
1.JSON简介
JavaScript Object Notation。 脚本对象标签。
(1)用于存储数据的介质,类似于XML/HTML等。
Nosql 数据库Mongodb–》文档数据库。存储的是文档–》存储的JSON。
(3)用于数据的交互。以JSON的方式传递数据。
JsoN结构:
(1){}包裹信息,里面是使用:隔开的key/value 一对一对的。
(2)json里面还可以包裹json
{“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}
JSON和XML对比
(1)表示同样的信息量,JSON结构更简单。
(2)JSON的数据解析比XML的解析简单很多。
XML解析:SAX/Xpath解析
JSON解析:和操作普通java对象相同。对象.name
如下XML所示:
<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!--初始化连接池大小-->
<property name="initialSize" value="5"/>
<property name="maxTotal" value="20"/>
<!--连接池最小空闲-->
<property name="minIdle" value="0"/>
<!--获取连接池最大等待时间-->
<property name="maxWaitMillis" value="1"/>
</bean>
为什么需要使用JSON交互开发
请求客户端种类非常多,请求的方式有各种各样。导致服务端需要处理各种各样的方式的请求。不利于服务端统一开发。
使用JSON交互可以很好兼容各种不同的终端发起的请求。
2.SpringMVC JSON交互开发准备
2.1.前端开发JSP。
开发JSON交互,使用ajax,使用Jquery框架封装的ajax
在web项目里面放入jquery库的文件。
2.2.后端开发准备
导入Jar包。
SpringMVC 的j’son开发需要依赖下面的这些jar包。
http://mvnrepository.com/artifact/com.fasterxml.jackson.core
Jackson-databind:用于springMVC json数据的绑定。
Jackson-annotations: springMVC json注解的主持包
Jackson-core: json java 开发的核心jar包
Jackson-core-asl和jackson-mapper-asl :json String与json的转换需要的jar包。
3.JSON交互前端开发
3.1Jquery Ajax请求
在jsp中需要引入jquery库文件。
使用JQuery的Ajax方法发起请求。
$.ajax({
url:"http://localhost:8080/ssm/getUser",
data:JSON.stringify(data),
type:"POST",
dataType: "json",
contentType: "application/json;charset=UTF-8",
success:function(ret){
//console.log(ret);
},
});
注意的地方:
(1)指定请求的contentType:application/json;charset=utf-8
(2)指定dataType:json
(3)data : 传递的参数。要求传入的是json字符串。
(4)Sucess:function(ret){}:处理成功的回调函数中,接收到的返回数据也是JSON,在回调函数中需要对J’son数据进行处理。
3.2 配置静态文件映射
<mvc:resources location="/WEB-INF/css/" mapping="/css/**"></mvc:resources>
<mvc:resources location="/WEB-INF/js/" mapping="/js/**"></mvc:resources>
3.3 JS的JSON操作
(1)将表单序列化为一个JSON对象
$('#formDemo').serializeJson()返回的是一个Object体
$.fn.serializeJson = function() {
var serializeObj = {};
var array = this.serializeArray();
var str = this.serialize();
$(array).each(
function() {
if (serializeObj[this.name]) {
if ($.isArray(serializeObj[this.name])) {
serializeObj[this.name].push(this.value);
} else {
serializeObj[this.name] = [
serializeObj[this.name], this.value ];
}
} else {
serializeObj[this.name] = this.value;
}
});
return serializeObj;
};
(2)将JSON对象转换为一个字符串
JSON.stringify($('#formDemo').serializeJSON())返回的是JSON字符串
(3)将JSON字符串转换为JSON对象
var obj = str.parseJSON();或者var obj = JSON.parse(str);
3.4 @RequestBody
用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上。
将JSON串绑定到形参上面上去,json里面的key 和Pojo的属性对应。
3.4.1 JSON绑定简单类型POJO
pojo是一个简单的类型。–>JSON的key和形参的pojo对象的属性名称相同。
JSON -》{id:“1111”,name:"",price:"",amount:"",description:""}
绑定的pojo 对象属性:
private int id,
private String name;
private float price;
private int amount;
private String description;
3.4.2 JSON绑定包装类型POJO
JS组装JSON串:
Controller中使用包装pojo绑定JSON串
包装类pojo
public class OfferVO {
@Valid
private Offer offer;//商品的基本信息
@Valid
private OfferExtend offerExtend;//商品的扩展信息
public Offer getOffer() {
return offer;
}
public void setOffer(Offer offer) {
this.offer = offer;
}
public OfferExtend getOfferExtend() {
return offerExtend;
}
public void setOfferExtend(OfferExtend offerExtend) {
this.offerExtend = offerExtend;
}
}
3.5 @ResponseBody
将对象封装成一个JSON串,返回给前端。
用在方法上,或者方法返回的数据类型之前。
3.8.6表单提交返回JSON
JS的开发
$.ajax({
url:"offer/saveOfferJson",
method:"POST",
data:$('#saveOffer').serialize(),
success:function(result){
//打印到浏览器的控制台
console.log(result);
}
});
Controller开发
@RequestMapping("/saveOfferJson")
public @ResponseBody Result saveOfferJson(OfferVO OfferVo) {
System.out.println("获取到的Offerid:"+OfferVo.getOffer().getId());
System.out.println("获取到的offername:"+OfferVo.getOffer().getName());
Result result=new Result();
//resultCode:100001 表示执行成功
result.setResultCode("100001");
result.setResultMessage("执行成功!");
return result;
}
参数绑定
后端返回JSON串
4.JSON交互场景总结
JSON交互的方式:
(1)请求是JSON串,在controller方法的形参上使用@RequestBody注解,将请求的JSON串绑定到pojo对象。
(2)请求的是表单提交的方式。直接使用springMVC的参数绑定,不需要做转换。
(3)返回JSON串,在controller方法的返回数据类型前加上@ResponseBody注解,将返回的对象转换为JSON串。
推荐阅读
-
Python基础一: 计算机基础,Python相关介绍,变量,常量,注释,基础数据类型(int,str,bool),用户交互input,流程控制语句if
-
用Python进行数据清洗,这7种方法你一定要掌握
-
vuejs前后端数据交互之从后端请求数据的实例
-
详解angularJs中自定义directive的数据交互
-
大数据学习路线图 让你精准掌握大数据技术学习?
-
零基础学习大数据需要掌握的基础
-
两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)
-
Java操作Jxl实现数据交互。三部曲——《第二篇》
-
掌握Excel 图表的使用技巧以来图示化地描述电子表格中的数据
-
学习大数据,运用大数据掌握最强吃鸡攻略!