Ajax课堂笔记

Ajax介绍
异步javaScript 和 xml 是一种创建交互式,动态网页开发技术,无需加载整个网页的情况下,能够更新页面局部数据技术,
在这里插入图片描述

  • Ajax的使用
    XmlHttpRequest对象这个是浏览器接口对象,通过http协议在浏览器和web服务器之间收发xml或是其他数据,是Ajax的编程核心对象,
    作用就是用来发送异步请求来完成局部刷新。(是不是可以理解为Ajax的api就是使用这个对象呢?)

  • Ajax的使用步骤
    1.创建XMLHttpRequest对象, var xhr = new XMLHttpRequest();
    2.给定请求方式以及请求地址,xhr.open(“get”,“http://www.example.com”);
    3.发送请求 xhr.send();
    4.获取服务器端给客户端响应数据 xhr.onreadystatechange=function(){}
    function(){
    if(xhr.readyState == 4 && xhr.status == 200){
    document.getElementById(“span”).innerHtml = xhr.resoponseText;
    alter(xhr.responseText);
    }
    }
    案列:
    页面编写方式
    在这里插入图片描述
    后端代码
    在这里插入图片描述

  • Ajax的基本原理
    在这里插入图片描述
    原理分为两部分 cilent是客户端 浏览器 server是服务端 后端服务器
    1.首先要通过一个事件来调用一个函数,
    2.创建异步对象xmlhttprequest() 发送请求send
    3.服务端接收请求并产生响应 在响应时在注意不能是请求转发或是重定向,使用字符输出流来响应,
    4.页面在利用一个函数来处理这个响应数据

  • json
    json javascript object notation 是一种基于字符串的数据交换格式,就是说前后端数据交互的一种格式,优点是阅读方便,容易编写,同时机器也方便阅读和生成,json是javaScript数据类型的子集。
    为什么要使用json
    在json未出现之前对于ajax中数据传递方式,会使用xml来作为数据格式传输数据,有了json格式字符串,速度更快,体积小,容易解析,

  • json格式
    json是按照特定的语法规则生成字符串结构,
    {} 利用大括号来表示json的字符串对象,
    “属性”:“value” 属性和值用冒号分隔,属性用双引号,值如果是字符串必须要双引号,其他可以不用 可以有多个属性
    [] 中括号表示是数组,对象之间用逗号分隔,
    json格式字符串对象示例:
    {“userid”:1,“username”:“admin”,“sex”:“boy”}
    数组:[{“userid”:1,“username”:“admin”},{“userid”:2,“username”:“haha”}] 中括号表示数组 对象与对象之间用逗号分隔,对象中的元素之间用冒号分隔,

  • json支持的数据类型
    String 字符串 必须用双引号括起来,
    number 数值 可以去掉双引号,
    object 对象形式 {key:value} 说明对象可以嵌套对象啊
    array 数组 [vlaue,value] 说明对象中可以嵌套数组
    true/false boolean
    null 空值

  • jackson
    在jdk中没有内置操作json数据格式的api,因此需要处理json格式的数据需要借助第三方类库,
    解析器:jackson解析器是称为最好的解析器,因为spring中模式使用它来处理json格式数据,
    在这里插入图片描述

  • jackson处理json格式数据的步骤
    在响应中通过json格式传递数据,
    1.先添加jar包
    2.通过jackson api将java对象转化成json格式
    3.修改响应头,响应类型为appliction/json
    4.将结果基于字符输出流退回客户端浏览器
    5.在页面中通过javascript的json.parse()函数将json格式的数据转化成javascript对象

  • 通过json格式传递单个对象
    在这里插入图片描述
    在这里插入图片描述
    重点解析一下这个流程,
    后端:
    首先继承httpservlet 重写doget()
    利用jackson对象的api将java对象转化成json格式的字符串,
    将写入字符流中
    前端:
    一个事件绑定一个函数
    使用Ajax技术要使用XMLHttpRequest对象来发送异步请求,
    使用函数来接收处理结果,
    使用使用js中的内置对象JSON来转化后端传过来的json字符串,
    使用document对象来进行数据处理,

  • 通过json格式在响应中传递多个对象
    在这里插入图片描述

  • 在json中通过map来传递数据
    在这里插入图片描述
    在这里插入图片描述

  • 在请求中通过json格式传递数据
    在响应中通过json格式来传递数据,在请求中也可以使用json格式传递数据,如果在请求中使用了json格式传递数据,那么提交方式要使用post方式,通过javaScript中的json.stringify()函数将javaScript对象转化成json格式的数据,通过send方法来将数据发送到servlet中,在servlet中通过字符流输入流获取json格式数据,
    在请求中使用jackson处理json格式数据的步骤:
    1.在页面上javaScript中通过JSON.stringify()方法将对象转化成json格式的数据,
    2.将请求方式设置成post方式
    3.通过send方法发送
    4.在servlet中通过字符流读取请求体中json数据
    5.通过jackson api 将获取到json格式的数据转成了java对象
    在这里插入图片描述
    在这里插入图片描述

  • jackson中的注解
    1 @jsonProperty
    这个注解是用于实体类上的属性上就是说作用于参数上,一般情况下将java对象变成json对象后,key = 属性名 ,value = 属性值,使用这个注解可以自定义json对象中key的名字,
    2 @JsonIgnore
    这个注解是用于放在属性上,表示用来忽视被注解了的属性,意思就是在转成json对象是,该实体类的属性被忽视掉,注意如果这个属性有多个注解,其中一个注解是@jsonIgnore,则表示被忽视的是其他注解被取消,没有忽视该属性值,
    3 @JsonFormat
    这个注解是用在属性上或是方法上,可以将date类型属性的值直接转化成自定义格式的样式,
    @JsonFormat(pattern=“yyyy-MM-dd hh:mm:ss”)
    private Date time;

  • jackson工具类

package com.bjsxt.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.List;

/**
 * jackson自定义一个工具类 这个类是一个单例模式 首先要创建一个私有的静态的 固定的对象变量,在创建对象赋值给他
 * 这样就保证了这个工具类只能生产一个对象,
 * 里面有三个方法,都是公开的, 静态的方便调用, 注意注意返回类的类型如果不确定的话可以使用标识泛型
 */
public class Jackson {
    //定义一个jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();
    //将对象转化成json对象
    public static String objectToJson(Object data){
        try{
            String s = MAPPER.writeValueAsString(data);
            return s;
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
    //将一个josn结果转化成java对象
    public static <T>T jsonTOPojo(String jsonData,Class<T>beanType){
        try{
            T t = MAPPER.readValue(jsonData,beanType);
            return t;
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    //将json数据转化成pojo对象list集合哈
    public static <T>List<T> jsonToList(String jsonData,Class<T>beanType){
        JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
        try{
            List<T> list= MAPPER.readValue(jsonData, javaType);
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }


}

  • 在jquery中使用Ajax
    在Jquery中封装了Ajax,在Jquery中提供了很多基于Ajax的发送异步请求的方法
    语法结构:
    1 $.ajax({name:value,name:value,…})
    名称 值
    url : 发送请求的地址
    type:设置请求的类型
    success:当请求成功后运行的函数,
    data:发送的数据
    在这里插入图片描述

  • $.ajax()在异步请求中提交数据
    在 $.ajax({})方法中通过data属性来存放提交的数据,支持json格式数据
    在data属性中我们可以通过两种方式来指定提交数据,一种是name=value & name=value 另一种是javaScript对象指定提交数据,无论使用那种方式在servlet中都是通过request.getParamter(name) 根据name取值value
    1.标准格式是 data:“name=value & name=value…”
    在这里插入图片描述
    在这里插入图片描述

  • 用jquery使用ajax提交json数据
    在$.ajax()中提交json数据,需要使用post方式来提交,通过js中json.stringify()函数将javaScript对象转化成json格式数据,在servlet中通过提取字符来获取数据
    data.Json.stringify({name:value,name:value…})
    在servlet中使用req.getReader().readLine()来获取提交数据,
    在这里插入图片描述

  • $.ajax()处理响应中的json格式数据
    $.ajax()方法会根据datatype属性中的值自动对响应的数据进行类型处理,如果响应数据是json,那么datatype的值是json,
    在结果函数中直接获取的json转化成js的对象数据,不需要在使用json.parse()方法来转化了

  • $.get()的使用
    $.get()方法是 $.ajax()方法基于get方式发送异步请求的简化版
    语法结构:
    $.get(url,function(result)) 这个函数是用来做结果集处理的,就是对响应数据进行处理
    $.get(url,data,function(result)) 多了一个参数
    data数据有两种格式可以提交
    1 $.get(url,“name=key&name=value”,function(result)) 这种是标准格式提交数据
    2 $.get(url,{userid:1,username:“oldlu”…}),function(result))
    在这里插入图片描述

  • $.post()的使用
    $.post()方法是 $.ajax()方法基于post方式发送异步请求的简化版
    语法格式
    $.post(url,function(result))
    $.post(url,data,function(result))
    标准data数据格式
    $.post(url,“name=value&name=value”,function(result))
    通过javascript对象指定提交数据
    $.post(url,{userid:1,username:“value”},function(result))
    注意不支持json格式数据
    在这里插入图片描述

  • $.getJSON()的使用
    $.getJSON()方法是 $.ajax()方法基于get方式发送异步请求,并将响应结果中的json格式数据的字符串对象自动转化成javascript对象,在使用这个方法时要求返回数据必须是json格式数据类型, $.getJSON()方法和resp.setContentType(“appliction/json”)是一起使用的,
    语法结构
    $.getJSON(url,function(result))
    $.getJSON(url,data,function(result))
    data数据类型有两种标准式是
    $.getJSON(url,“name=value&name=value”,function(result));
    要求返回的数据必须是json格式的数据
    $.getJSON(ur,{userid:1,username:“oldlu”},function(result))
    要求返回的数据必须是json格式的数据
    在这里插入图片描述
    在这里插入图片描述

  • serialize()方法的使用
    将form表单中的数据自动拼接成name=value&name=value结构。 这个方法是jquery下的方法
    注意ajax是不提交表单的,所以表单的值需要一个一个来获取,所以需要这个方法,
    语法结构:var param = $(“form”).serialize(); form就是标签,意思就是获取了所有form标签下的key=value结构的数据,
    param的值是name=value&name=value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值