• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

AJAX和Json

武飞扬头像
ck_67
帮助1

AJAX

1.1 概念

ASynchronous JavaScript And XML 异步的JavaScript 和 XML

异步和同步:客户端和服务器端相互通信的基础上

同步:客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。

异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

   通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
        传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

        提升用户的体验


1.2 实现方式

JQeury实现方式

1.2.1 $.ajax()

导入jar包

<script src="https://blog.csdn.net/ck_67/article/details/js/jquery-3.3.1.min.js"></script>

  1.  
    <script>
  2.  
    function fun() {
  3.  
    $.ajax({
  4.  
    url:"ajaxServlet11",//请求路径
  5.  
    type:"POST",//请求方式
  6.  
    data:{"username":"jack"},//请求参数
  7.  
    success:function (data) {//成功后执行的回调函数
  8.  
    alert(data);
  9.  
    },
  10.  
    //失败后执行
  11.  
    error:function () {
  12.  
    alert("出错了")
  13.  
    }
  14.  
    });
  15.  
    }
  16.  
    </script>
  17.  
    </head>
  18.  
    <body>
  19.  
    <input type="button" value="发送异步请求" onclick="fun();">
  20.  
     
  21.  
    <input>
  22.  
    </body>
学新通

后面也使用<body>里的内容

1.2.2 $.get():发送get请求

语法:$.get(url, [data], [callback], [type])
                参数:
                    url:请求路径
                    data:请求参数
                    callback:回调函数
                    type:响应结果的类型

代码演示

  1.  
    <script>
  2.  
    function fun() {
  3.  
    $.get("ajaxServlet",{"username":"rose"},function (data) {
  4.  
    alert(data);
  5.  
    });
  6.  
    }
  7.  
    </script>

1.2.3 $.post():发送post请求

语法:$.post(url, [data], [callback], [type])
                参数:
                    url:请求路径
                    data:请求参数
                    callback:回调函数
                    type:响应结果的类型

代码演示

  1.  
    <script>
  2.  
    function fun() {
  3.  
    $.post("ajaxServlet",{"username":"rose"},function (data) {
  4.  
    alert(data);
  5.  
    });
  6.  
    }
  7.  
    </script>

2 JSON

2.1 概念

JavaScript Object Notation        JavaScript对象表示法

就是用来存储数据的对象,通常用来与java对象进行转换

son现在多用于存储和交换文本信息的语法
进行数据的传输
JSON 比 XML 更小、更快,更易解析。


2.2 语法

2.2.1 基本规则

数据在名称/值对中:json数据是由键值对构成的
          键用引号(单双都行)引起来,也可以不使用引号
          值得取值类型:
                1. 数字(整数或浮点数)
                2. 字符串(在双引号中)
                3. 逻辑值(true 或 false)
                4. 数组(在方括号中)    {"persons":[{},{}]}
                5. 对象(在花括号中) {"address":{"province":"陕西"....}}
                6. null
        数据由逗号分隔:多个键值对由逗号分隔
        花括号保存对象:使用{}定义json 格式
        方括号保存数组:[]

2.2.2 获取数据

1. json对象.键名
2. json对象["键名"]
3. 数组对象[索引]
4. 遍历

  1.  
    <script>
  2.  
    //基本格式
  3.  
    var person={"name":"张三",age:23,'gender':true};
  4.  
    //获取方式
  5.  
    //1.不用引号
  6.  
    alert(person.name);
  7.  
    //2.要引号
  8.  
    alert(person["name"]);
  9.  
     
  10.  
    //.嵌套格式 1 {}———> []
  11.  
    var persons = {
  12.  
    "persons": [
  13.  
    {"name": "张三", "age": 23, "gender": true},
  14.  
    {"name": "李四", "age": 24, "gender": true},
  15.  
    {"name": "王五", "age": 25, "gender": false}
  16.  
    ]
  17.  
    };
  18.  
    //获取王五
  19.  
    alert(persons.persons[2].name);
  20.  
     
  21.  
    //嵌套格式 2 []———> {}
  22.  
    var ps = [{"name": "张三", "age": 23, "gender": true},
  23.  
    {"name": "李四", "age": 24, "gender": true},
  24.  
    {"name": "王五", "age": 25, "gender": false}];
  25.  
    //获取李四值
  26.  
    alert(ps[1].name);
  27.  
    </script>
学新通

遍历使用  for in 

需要注意key相当于字符串

  1.  
    <script>
  2.  
    //1.定义基本格式
  3.  
    var person = {"name": "张三", age: 23, 'gender': true};
  4.  
     
  5.  
    var ps = [{"name": "张三", "age": 23, "gender": true},
  6.  
    {"name": "李四", "age": 24, "gender": true},
  7.  
    {"name": "王五", "age": 25, "gender": false}];
  8.  
     
  9.  
     
  10.  
    //获取person对象中所有的键和值
  11.  
    //for in 循环
  12.  
    /* for (var key in person) {
  13.  
    //key是字符串 = "name"
  14.  
    alert(key ":" person[key]);
  15.  
    }*/
  16.  
    for (var i = 0; i < ps.length; i ) {
  17.  
    let p = ps[i];
  18.  
    for (var key in p) {
  19.  
    alert(key ":" p[key]);
  20.  
    }
  21.  
    }
  22.  
    </script>
学新通

2.3 JSON数据和Java对象的相互转换

JSON解析器

常见的解析器:Jsonlib,Gson,fastjson,jackson

2.3.1 JSON转为Java对象

1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换

   学新通

  1.  
    //演示 JSON字符串转为Java对象
  2.  
    @Test
  3.  
    public void test5() throws Exception {
  4.  
    //1.初始化JSON字符串
  5.  
    String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";
  6.  
     
  7.  
    //2.创建ObjectMapper对象
  8.  
    ObjectMapper mapper = new ObjectMapper();
  9.  
    //3.转换为Java对象 Person对象
  10.  
    Person person = mapper.readValue(json, Person.class);
  11.  
     
  12.  
    System.out.println(person);
  13.  
    }

 2.3.2 Java对象转换JSON

使用步骤

1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换

1. 转换方法

 writeValue(参数1,obj):
       参数1:
            File:将obj对象转换为JSON字符串,并保存到指定的文件中
            Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
            OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串

writeValueAsString(obj)

  1.  
    //java对象转换为json对象
  2.  
    @Test
  3.  
    public void test1() throws Exception {
  4.  
    Person p1 = new Person("张三", 23, "男");
  5.  
     
  6.  
    //创建ObjectMapper对象
  7.  
    ObjectMapper mapper = new ObjectMapper();
  8.  
     
  9.  
    //转换
  10.  
    String json = mapper.writeValueAsString(p1);
  11.  
    //System.out.println(json);
  12.  
    // {"name":"张三","age":23,"gender":"男"}
  13.  
    }

writeValue

  1.  
    @Test
  2.  
    public void test1() throws Exception {
  3.  
    Person p1 = new Person("张三", 23, "男");
  4.  
     
  5.  
    //创建ObjectMapper对象
  6.  
    ObjectMapper mapper = new ObjectMapper();
  7.  
     
  8.  
    //writeValue,将数据写到d://a.txt文件中
  9.  
    mapper.writeValue(new File("d:\\a.txt"),p1);
  10.  
     
  11.  
    mapper.writeValue(new FileWriter("d:\\b.txt"),p1);
  12.  
    }
  13.  
    @Test
  14.  
    public void test3() throws Exception {
  15.  
    //1.创建Person对象
  16.  
    Person p = new Person();
  17.  
    p.setName("张三");
  18.  
    p.setAge(23);
  19.  
    p.setGender("男");
  20.  
    p.setBirthday(new Date());
  21.  
     
  22.  
    Person p1 = new Person();
  23.  
    p1.setName("张三");
  24.  
    p1.setAge(23);
  25.  
    p1.setGender("男");
  26.  
    p1.setBirthday(new Date());
  27.  
     
  28.  
    Person p2 = new Person();
  29.  
    p2.setName("张三");
  30.  
    p2.setAge(23);
  31.  
    p2.setGender("男");
  32.  
    p2.setBirthday(new Date());
  33.  
     
  34.  
     
  35.  
    //创建List集合
  36.  
    ArrayList<Person> list = new ArrayList<>();
  37.  
    list.add(p);
  38.  
    list.add(p1);
  39.  
    list.add(p2);
  40.  
     
  41.  
    //创建ObjectMapper对象
  42.  
    ObjectMapper mapper = new ObjectMapper();
  43.  
     
  44.  
    //转换
  45.  
    String json = mapper.writeValueAsString(list);
  46.  
    System.out.println(json);
  47.  
    }
  48.  
     
  49.  
    @Test
  50.  
    public void test4() throws Exception {
  51.  
    HashMap<String, Object> map = new HashMap<>();
  52.  
    map.put("name","张三");
  53.  
    map.put("age",23);
  54.  
    map.put("gender","男");
  55.  
     
  56.  
    //创建ObjectMapper对象
  57.  
    ObjectMapper mapper = new ObjectMapper();
  58.  
     
  59.  
    //转换
  60.  
    String json = mapper.writeValueAsString(map);
  61.  
    System.out.println(json);
  62.  
    }
学新通

2. 注解

1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
    @JsonFormat(pattern = "yyyy-MM-dd")

学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgciach
系列文章
更多 icon
同类精品
更多 icon
继续加载