1、Ajax

1、Ajax是一种异步刷新技术,用来在当前页面内响应不同的请求内容
2、是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
3、通过在后台与服务器进行少量数据交换,实现异步更新

同步和异步:

客户端和服务器相互通信的基础上
同步:客户端必须等待服务器端的响应,在等待期间客户端不能做其他操作
异步:客户端不需要等待客户端的响应,在服务器处理请求的过程中,客户端可以进行其他操作

2、Ajax的使用

$.ajax:

  1. <script>
  2. function send_ajax() {
  3. $.ajax({
  4. url:"", //请求资源地址
  5. type: "GET", //请求方法
  6. data:{"键1":"值1","键2":值2}, //请求的参数。json格式(键值对)
  7. success:function (date) { //响应成功,data为响应的数据内容
  8. alert(date); //对响应的数据进行操作
  9. },
  10. error:function () { //请求失败
  11. alert("出错了!"); //对请求失败进行处理
  12. },
  13. dataType:"text" //预处理响应的数据类型
  14. });
  15. }
  16. </script>

$.get&$.post:

  1. $.get(url, [data], [callback], [type])
  2. url:请求路径
  3. data:请求参数(json类型的键值对)
  4. callback:回调函数(响应处理)
  5. type:响应结果的类型
  6. $.post(url, [data], [callback], [type])

3、JSON

1、json多用于储存和交换文本信息
2、进行数据的运输
3、JSON比XML更小,更快,更易解析

解析对象:

  1. <script>
  2. // 定义json对象person
  3. let person = {"username":"张三","性别":"男","age":13};
  4. // 解析数据: 使用forin遍历person对象
  5. for (let key in person){
  6. let value = person[key];
  7. alert(key+":"+value);
  8. }
  9. </script>

解析数组:

  1. <script>
  2. // 定义json对象person
  3. let persons = [
  4. {"username": "张三", "性别": "男", "age": 13,},
  5. {"username": "李四", "性别": "女", "age": 14,},
  6. {"username": "王五", "性别": "男", "age": 15,}
  7. ];
  8. // 解析数据: 使用forof遍历persons对象
  9. for (let person of persons) {
  10. // 遍历获取到每一个person对象,使用forin遍历获取属性和值
  11. for (let key in person) {
  12. let value = person[key];
  13. console.log((key + ":" + value));
  14. }
  15. }
  16. </script>

解析K对应的数组:

  1. <script>
  2. // 定义json对象person
  3. let obj = {"girls":["小泽","小苍","小莉","小波"]};
  4. console.log("----------方式一---------");
  5. // 获取对象中的key
  6. for (let key in obj) {
  7. // key,获取的值对应的是数组
  8. let value = obj[key];
  9. for (let name of value){
  10. console.log(name);
  11. }
  12. }
  13. console.log("----------方式二---------");
  14. // 通过对象名.键名获取对应的value
  15. let girls = obj.girls;
  16. for (let girl of girls){
  17. console.log(girl);
  18. }
  19. </script>

使用$.each遍历JSON对象:

  1. <script>
  2. var obj = {
  3. "persons": [
  4. {"name": "张三", "age": 23, "gender": true},
  5. {"name": "李四", "age": 24, "gender": true},
  6. {"name": "王五", "age": 25, "gender": false}
  7. ]
  8. };
  9. $.each(obj,function (index,element) {
  10. // 遍历获取到每一个对象{"name": "张三", "age": 23, "gender": true}
  11. for (let person of element){
  12. for (let key in person) {
  13. let value = person[key];
  14. console.log((key + ":" + value));
  15. }
  16. }
  17. });
  18. </script>

4、JSON对象与JAVA对象的转换

json常见解析器:Jsonlib,Gson,fastjson,jackson
1、导包,jackson相关jar包
2、创建核心对象 ObjectMapper
3、调用ObjectMapper的相关方法进行转换

java对象转换json:

  1. writeValue(File destPath, Object obj)
  2. obj对象转换为JSON字符串,并保存到指定的文件中
  3. writeValue(OutputStream os, Object obj)
  4. obj对象转换为JSON字符串,并将json数据填充到字节输出流中
  5. writeValue(Writer writer, Object obj)
  6. obj对象转换为JSON字符串,并将json数据填充到字符输出流中
  7. writeValueAsString(Object obj)
  8. 将对象转为json字符串
  9. jackson相关注解:
  10. @Jsonlgnore 排除属性,意思是不json化指定属性
  11. @JsonFormat 属性值格式化,用于date属性:@JsonFormat(pattern = "yyyy-MM-dd")

ObjectMapperUtil工具类:

  1. public class ObjectMapperUtil {
  2. // 将User对象序列化为Json对象
  3. public static String objectToJson(User user) throws JsonProcessingException {
  4. ObjectMapper objectMapper = new ObjectMapper();
  5. String json = objectMapper.writeValueAsString(user);
  6. return json;
  7. }
  8. // 将List对象序列化为Json对象
  9. public static String listToJson(List<User> list) throws JsonProcessingException {
  10. ObjectMapper objectMapper = new ObjectMapper();
  11. String json = objectMapper.writeValueAsString(list);
  12. return json;
  13. }
  14. // 将Map对象序列化为Json对象
  15. public static String mapToJson(Map<String, ArrayList<User>> map) throws JsonProcessingException {
  16. ObjectMapper objectMapper = new ObjectMapper();
  17. String json = objectMapper.writeValueAsString(map);
  18. return json;
  19. }
  20. }

json转换java对象:

  1. readValue(String json,Class clazz)
  2. 将指定的json字符串转换成指定的对象

5、小Demo