Ajax & json知识点整理

4 篇文章 0 订阅
2 篇文章 0 订阅

AJAX

1.概念
ASynchronous JavaScript And XML 异步的Javascript 和XML

一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

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

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

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

2.实现方式

1.原生JS实现方法(了解即可)

<script>
        function fun() {
            //发送异步请求
            //1.创建核心对象,兼容模式
            var xmlHttp;
            if(window.XMLHttpRequest){
               xmlHttp = new XMLHttpRequest();
            }else{
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            //2.建立链接
            /*
                参数:1.请求方式:get  post
                            get方式,请求参数在url后面拼接
                            post方式,请求参数在send方法中定义
                      2.请求的url
                      3.同步或异步(true:异步 或 false:同步)
             */
            xmlHttp.open("get","ajaxServlet?username=tom",true);
            //3.发送请求
            xmlHttp.send();
            //4.接收并处理服务器响应结果
            //获取方式: xmlHttp.responseText
            //什么时候获取?当服务器响应成功后获取
            // 当这个对象xmlHttp的就绪状态改变时,触发事件onreadystatechange
            xmlHttp.onreadystatechange = function () {
                //判断就绪状态是否为4,判断status响应状态码是否是200
                if (xmlHttp.readyState==4 && xmlHttp.status == 200){
                    //获取服务器响应的结果
                    var responseText = xmlHttp.responseText;
                    alert(responseText);
                }
            }
        }
    </script>

2.Jquery实现方式

1. . a j a x ( ) 语 法 : .ajax() 语法: .ajax().ajax({键值对})
参数
method get/post
url 1.get.php / 1.post.php
data 数据
success 数据下载成功以后执行的函数
error 数据下载失败后执行的函数

//使用$.ajax()发生异步请求
            $.ajax({
               url:"ajaxServlet",//请求路径
               type:"post",//请求方式
               //data:"username=jack&age=23",//请求参数
                data:{
                   "username":"jack",
                    "age":"23"
                },
                success:function (msg) {
                   alert(msg);
                    //响应成功后的回调函数
                },
                error:function (msg) {
                    //响应失败后的回调函数
                    alert("出错了")
                },
                dataType:"text" //设置接收到的响应数据的格式
            });

2.$.get发送get请求 语法:Jquery.get(url , [data], [callback], [type])

参数:
url:请求路径
data:请求参数
callback:回调函数
type:响应结果的类型

function fun() {
           //使用$.get请求
            $.get("ajaxServlet",{username:"rose"},function (msg) {
                alert(msg);
            },"text");
        }

3…$.post()发送post请求 语法:Jquery.post(url , [data], [callback], [type])

<script>
        function fun() {
           //使用$.get请求
            $.post("ajaxServlet",{username:"rose"},function (msg) {
                alert(msg);
            },"text");
        }
    </script>

JSON

概念:JavaScript Object Notation Javascript 对象表示法

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

语法:
1.基本规则
1.数据在名称/值对中:json数据是由键值对构成的

键用引号(单双都可以)引起来,也可以不使用引号

值的取值类型:
1.数字(整数或浮点数)
2.字符串(在双引号中)
3.逻辑值(true 或 false)
4.数组(在方括号中)
{“persons”:[ { },{ }] }
5.对象(在花括号中){“address”:{“province:“陕西”…}}
6. null
2.数据由逗号分割:多个键值对由逗号分割

3.花括号保存对象:使用{ }定义json格式

4.方括号保存数组 [ ]

//1.定义基本格式
        var person = {"name":"张三",age:23,'gender':true};
        //alert(person);
        //2.嵌套格式{} ----》[ ]
        var persons = {"persons":[
                {"name":"张三","age":23,"gender":true},
                {"name":"李四","age":24,"gender":true},
                {"name":"王五","age":25,"gender":false}
                ]
        };
        //alert(persons);
        //3.嵌套格式[ ] -----》{ }
        var ps =[{"name":"张三","age":23,"gender":true},
            {"name":"李四","age":24,"gender":true},
            {"name":"王五","age":25,"gender":false}];

2.获取数据
1.json对象.键名
2.json对象[“健名”]
3.数组对象[索引]

3.遍历获取数据
for in 循环

var person = {"name":"张三",age:23,'gender':true};
        //获取person对象中所有的健和值
        //for  in  循环
        for (var key in person){
            //注意这里的key 是字符串
            alert(key+":"+person[key]);
        }

Json数据和Java对象的相互转换

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

1.Json转为java对象(了解)
使用步骤:
1.导入jackson的相关jar包
jackson-core-2.9.8.jar
jackson-databind-2.9.8.jar
jackson-annotations-2.9.0.jar
2.创建Jackson核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
3.调用ObjectMapper的相关方法进行转换
转换方法:

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

2.java对象转为Json(jackson)

使用步骤:
1.导入jackson的相关jar包
jackson-core-2.9.8.jar
jackson-databind-2.9.8.jar
jackson-annotations-2.9.0.jar
2.创建Jackson核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
3.调用ObjectMapper的相关方法进行转换
转换方法:

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

注解:

  1. @JsonIgnore:排除属性。 排除对应属性后,不会再转换为json键值对
    在对象的属性上 或者get方法上添加
    @JsonIgnore
    private Date birthday; //忽略该属性

2.@JsonFormat:属性值格式化
在对象的属性上 或者get方法上添加

@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
private Date birthday;  //格式化属性

复杂java对象转换
List:
转换后是数组

//创建list集合
        List<Person> list = new ArrayList<Person>();
        list.add(p1);
        list.add(p2);
        list.add(p3);

        //创建ObjectMapper对象
        ObjectMapper mapper = new ObjectMapper();
        //转换
        String string = mapper.writeValueAsString(list);
        System.out.println(string);
//[{"name":"张三","age":23,"gender":"男","birthday":"2020-05-14 12-16-20"},{"name":"张三","age":23,"gender":"男","birthday":"2020-05-14 12-16-20"},{"name":"张三","age":23,"gender":"男","birthday":"2020-05-14 12-16-20"}]

Map:转换后和对象的格式一致

public void test4() throws Exception {
        //1.创建map对象

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name","张三");
        map.put("age",23);
        map.put("gender","男");
        //创建ObjectMapper对象
        ObjectMapper mapper = new ObjectMapper();
        //转换
        String string = mapper.writeValueAsString(map);
        System.out.println(string);
        //{"gender":"男","name":"张三","age":23}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值