1. Ajax
概念:
ASynchronous JavaScript And XML : 异步的JavaScript 和 XML
异步和同步:在客户端和服务器端相互通信的基础上讲
- 同步:客户端必须等待服务器端的响应,在等待的期间客户端不能做其他操作
- 异步:客户端不需要等待服务器端的响应,在服务器处理请求的过程中,客户端可以进行其他的操作
因此Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。
Ajax的作用:提升用户的体验
2. JSON
-
概念: JavaScript Object Notation JavaScript对象表示法
-
在Java中在对象存储数据的方法:
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
- JSON中存储数据的方法:
var p = {"name":"张三","age":23,"gender":"男"};
JSON的作用:
- json现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON 比 XML 更小、更快,更易解析。
2.1 语法:
基本规则:
-
数据在名称/值对中:即json数据是由键值对构成的(相当于python的字典)
其中键可以用引号(单双都行)引起来,也可以不使用引号
值的取值类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中): {“persons”:[{},{}]}
- 对象(在花括号中): {“address”:{“province”:“陕西”…}}
- null
-
数据由逗号分隔:多个键值对由逗号分隔
-
花括号保存对象:使用{}定义json 格式
-
方括号保存数组:[]
-
可以嵌套:{“persons”:[{},{}]}, {“address”:{“province”:“陕西”…}}
获取数据:
- json对象.键名
- json对象[“键名”]
- 数组对象[索引]
示例:
//1.定义:
var person = {"name": "张三", age: 23, 'gender': true};
// 嵌套定义:
var ps = [{"name": "张三", "age": 23, "gender": true},
{"name": "李四", "age": 24, "gender": true},
{"name": "王五", "age": 25, "gender": false}];
//遍历获取person对象中所有的键和值
//for in 循环
for(var key in person){
// 这样的方式获取不行,因为相当于 person."name"
// alert(key + ":" + person.key);
// 正确方式:
alert(key+":"+person[key]);
}
//获取ps中的所有值
for (var i = 0; i < ps.length; i++) {
var p = ps[i];
for(var key in p){
alert(key+":"+p[key]);
}
}
2.2 JSON数据和Java对象的相互转换
JSON数据和Java对象的相互转换可以通过JSON解析器实现,常见的JSON解析器有:Jsonlib,Gson,fastjson,jackson,其中SpringMVC框架就是使用jackson的,下面讲解一下jackson的使用步骤:
实现步骤:
- 导入jackson的相关jar包:
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
- 创建Jackson核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
- 调用ObjectMapper的相关方法进行转换,其中Java对象转JSON采用write相关方法,JSON转为Java对象采用read相关方法
ObjectMapper相关API
方法名 | 说明 |
---|---|
writeValueAsString(obj) | 将Java对象转为json字符串 并且对于list与map集合也是可以转换的 |
writeValue(参数1,obj) | 参数1可以为File,writer与OutputStream File:将obj对象转换为JSON字符串,并保存到指定的文件中 Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中 OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 对于参数一,我们可以使用response对象提供的流 |
readValue(json字符串数据,Class类型) | 将json字符串数据转换为对应的类类型 |
注解:
-
@JsonIgnore:排除属性,排除后的属性不会被展示,应用在JavaBean的对应字段或者对应的get方法上
-
@JsonFormat:属性值的格式化,包含一个pattern属性,可以在这个属性中定义格式化要求,常用于日期值,同样应用在JavaBean的对应字段或者对应的get方法上
示例:
@JsonFormat(pattern="yyyy-MM-dd HH-mm-ss")