ajax

##Ajax
1. 概念:ASynchronous javaScript And XML 异步的JavaScript和XML
1. 异步和同步:客户端和服务器端相互通信的基础上
* 客户端必须等待服务器端的响应,在等待的期间客户端不能做其他操作
* 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他操作
Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
通过在后台与服务器进行少量的数据交换,Ajax可以使网页实现异步更新。这意味着
可以在不重叠的情况下,对网页的莫部分进行更新。传统的网页如果需要更新内容
必须重载整个网页页面。
2. 实现方式:
1. 原生的js实现方式(了解)

		<!DOCTYPE html>
		<html lang="en">
		<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
    function fun() {
        //发送异步请求
        //创建核心对象
        var xmlhttp;
        if(window.XMLHttpRequest){
            xmlhttp=new XMLHttpRequest();
        }
        else{
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        //发送请求
        /**
         * 参数
         *  1.请求方式:get post
         *      get请求参数在URL后边拼接,send方法为空参
         *      post方式,请求参数在send方法中定义
         *  2.请求的URL
         *  3.同步或异步请求,如果为同步则为false
         */
        xmlhttp.open("GET","ajaxServlet?username=tom",true);
       //发送请求
        xmlhttp.send();
        //接收并处理来自服务器的响应结果
        //获取方式:xmlhttp.responseText
        //什么时候获取,当服务器响应成功后再获取
        //当xmlhttp对象的就绪状态改变时,会触发事件onreadystatechange
        xmlhttp.onreadystatechange=function(){
            //判断readyState就绪状态是否为4判断status响应状态码是否为200

           if(xmlhttp.readyState==4&&xmlhttp.status==200){
              //获取服务器响应的结果
              // document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
                var responseText = xmlhttp.responseText;
                alert(responseText);
           }
        }
    }
</script>
/head>
<body>
<input type="button" value="发送异步请求" onclick="fun()">
<input>
</body>
</html>
	2. JQeury实现方式
		1. $.ajax()
			1. 语法:$.ajax({键值对});
			<script src="web/js/jquery-3.3.1.min.js"></script>
<script>
    //使用$.ajax(发送异步请求)
    $.ajax({
        url:"ajaxServlet",//请求路径
        type:"POST",//请求方式
       // data: "username=jack&age=2",//请求参数
        data:{"username":"jack"},
        success:function (data) {
            alert(data)
        }//响应成功后的回调函数
		 error:function () {
            alert("出错了");
        },//表示响应出错会执行的回调函数
        dataType:"text"//设置接收到的响应数据的格式
    })
</script>
		2. $.get():发送get请求
			1. .get(url, [data], [callback], [type])
				* url:请求路径
				* data:请求参数
				* callback:回调函数
				* type:响应结果的类型
  <script>
    function fun() {
      $.get("ajaxServlet",{username:"rose"},function (data) {
          alert(data);
      },"text");
    }
</script>
		3. $.post():发送post请求
		  .post(url, [data], [callback], [type])
				* url:请求路径
				* data:请求参数
				* callback:回调函数
				* type:响应结果的类型
  <script>
    function fun() {
      $.post("ajaxServlet",{username:"rose"},function (data) {
          alert(data);
      },"text");
    }
</script>

##Json:
1. 概念:JavaScript Object Notation JavaScript对象表示法
1. json现在多用于存储和交换文本信息的语法
2. JSON现在多用于存储和交流文本信息的语法
3. 进行数据的传输
4. json比XML更小,更快,更易解析
2. 语法:
1. 基本规则
* 数据在名称/值对中:json是由键值对构成的
* 键用引号引起来,也可以不使用引号
* 值的取值类型:
* 数字 (整数或浮点型)
* 字符串(在双引号中)
* 逻辑值(true或false)
* 数据(在方括号中)
* 对象 (在花括号中)
* null
* 数据由逗号分隔;多个简直对由逗号分割
* 花括号保存对象:使用{}定义json格式
* 方括号保存数据:[]
*
2. 获取数据:
1. json对象.键名: /var name=person.name;alert(name)/
2. json对象[“键名”]/* var name = persons.persons[2].name; alert(name)/
3. 数组对象[索引] alert(ps[1].age);
遍历//循环遍历
/
for(var key in person){
alert(key+":"+person[key]);
}*/
//获取数组遍历
for (var i=0;i<ps.length;i++){
var p=ps[i];
for (var key in p){
alert(key+":"+p[key]);
}
}
###JSON数据和Java对象的相互转换
* json解析器
* 常见的解析器:Jsonlib,Gson,fastjson,jackson
1. json转为Java对象
1. readValue(json字符串对象,Class)
2. Java对象转换为json
1. 使用步骤
2. 导入jackson的相关的jar包
3. 创建Jackson核心对象objectMapper
4. 调用ObjectMapper的相关方法进行转换
public class JacksonTest {

//Java对象转为json字符串
@Test
public void test1() throws IOException {
    //创建person对象
    Person p=new Person();
    p.setName("儿子");
    p.setGender("男");
    p.setAge(23);
    //创建Jackson的核心对象 ObjectMapper
    ObjectMapper mapper=new ObjectMapper();
    //转换
    /*
    转换方法:
    writeValue(参数1,参数2)
        参数1:File:将object对象转换为json字符串,
        并保存到指定的文件中
        Writer:将obj对象转换为JSON字符串,并将json
        数据填充到字符输出流中
        OutputSteram将obj对象转换为JSON字符串,并将json
        数据填充到字节输出流中

    writeValueAsString(obj):将对象转为json字符串
     */
    String json = mapper.writeValueAsString(p);
    System.out.println(json);//{"name":"儿子","age":23,"gender":"男"}
    //将数据写入到D://
    mapper.writeValue(new File("d://a.txt"),p);
    //writeValue将数据关联到writer中
  //  mapper.writeValue(new FileWriter("d://b.txt"));
}
}
	2.注解:
		1. @jsonIgnore:排除属性
		2. @JsonFormat:属性值的格式化

	3. 复杂的Java对象转换
		1. list:
			1. public void test1() throws IOException {
    //创建person对象
    Person p=new Person();
    p.setName("儿子");
    p.setGender("男");
    p.setAge(23);
    Person p1=new Person();
    p1.setName("儿子");
    p1.setGender("男");
    p1.setAge(23);
    Person p2=new Person();
    p2.setName("儿子");
    p2.setGender("男");
    p2.setAge(23);
    //创建一个集合
    List<Person> ps=new ArrayList<Person>();
    ps.add(p);
    ps.add(p1);
    ps.add(p2);
    ObjectMapper mapper=new ObjectMapper();
    String json=mapper.writeValueAsString(ps);

    System.out.println(json);
}
		2. Map:
     public void test1() throws IOException {
    Map<String,Object> map= new HashMap<String, Object>();
    map.put("name","张三");
    map.put("age",23);
    map.put("gender","男");
    ObjectMapper mapper=new ObjectMapper();
    String json=mapper.writeValueAsString(map);
    System.out.println(json);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值