AJAX + JSON + XML(一)

简介: AJAX + JSON + XML相关介绍

Ajax

20190905114824407.png

1. 什么是Ajax?

  • ASynchronous JavaScript And XML 异步的JavaScript 和 XML(掌握)

2. 异步(默认)和同步

  • ①. 客户端和服务器端相互通信的基础上,(true为异步,默认异步,false为同步)
  • ②. 同步:服务器在处理请求的过程中,浏览器必须等待服务器响应
  • ③. 异步:服务器在处理请求的过程中,浏览器不需要等待服务器响应(异步特点:局部刷新,数据传输量小,用户体验好!)

20190824213256408.png

3. Ajax的应用场景

  • Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
  • 百度的搜索框、用户注册时(校验用户是否被注册过)、分页

4.原生的JS的实现方式(了解)

  //1.创建核心对象
  var xmlhttp;
  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  //2. 建立连接
  /*
      参数:
          1. 请求方式:GET、POST
              * get方式,请求参数在URL后边拼接。send方法为空参
              * 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()
  {
      //判断readyState就绪状态是否为4,判断status响应状态码是否为200
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
      {
         //获取服务器的响应结果
          var responseText = xmlhttp.responseText;
          alert(responseText);
      }
  }

5. JQuery实现方式(掌握)

1>. $.ajax(({键值对});

  • data:{ }中的数据是josn格式 ; success:function(data){ } data是服务器给浏览器返回的结果


  $.ajax({
         url:"/jquerytest/ajaxServlet",//要请求服务区url
         type:"POST",//请求方式
         async:true,//是否是异步请求;true: false:  
         dataType:"json",//服务器返回的数据是什么类型
         //这是一个对象,它表示请求参数;两个参数一个是method=ajax;val=xxx
         //服务区端可以通过request.getParameter()获取
         data:{val:value},                          
         //data: "username=jack&age=23",//请求参数
         //data:{"username":"jack","age":23},
         cache:false,//是否缓冲结果
         beforeSend:function () {  }//执行前会调用的方法
         success:function(result){//这个函数会在服务器执行成功时被调用,参数result就是服务器返回的值
         }                          
         error:function(){}//表示如果请求响应出现错误,会执行的回调函数                                
    });

2>. $.get():发送get请求

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

20190824221841976.png

3>. $.post():发送post请求

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

2019082422185934.png

JSON

1.什么是JSON(用来存储数据)

  • 概念:是一种轻量级数据传输的格式,跟平台跟语言无关 [ JavaScript Object Notation(JavaScript对象表示法)]
  Person p = new Person();
  p.setName("张三");
  p.setAge(23);
  p.setGender("男");
  var p = {"name":"张三","age":23,"gender":"男"};
  * json现在多用于存储和交换文本信息的语法
  * 进行数据的传输
  * JSON 比 XML 更小、更快,更易解析。

2. 语法

1>. 基本规则

  • ①. 键用引号(单双都行)引起来,也可以不使用引号
  • ②. 值得取值类型:

20190905142359946.png

  • ③. 数据由逗号分隔:多个键值对由逗号分隔
  • ④. 花括号保存对象:使用{}定义json 格式
  • ⑤. 方括号保存数组:[ ]

20190824225101949.png

2>. 获取数据

  • ①. json对象.键名
  • ②. json对象[“键名”]
  • ③. 数组对象[索引]
  • ④. 遍历

20190824225703343.png

 //1.定义基本格式
  var person = {"name": "张三", age: 23, 'gender': true};
  var ps = [{"name": "张三", "age": 23, "gender": true},
      {"name": "李四", "age": 24, "gender": true},
      {"name": "王五", "age": 25, "gender": false}];
    //获取person对象中所有的键和值
    //for in 循环
   /* for(var key in person){
        //这样的方式获取不行。因为相当于  person."name"
        //alert(key + ":" + person.key);
        //key默认是字符串
        alert(key+":"+person[key]);
    }*/
   //获取ps中的所有值
    for (var i = 0; i < ps.length; i++) {
        var p = ps[i];
        for(var key in p){
            alert(key+":"+p[key]);
        }
    }

3. JSON和Java对象的相互转换

  • 常见的JSON解析器:Jsonlib,Gson,fastjson,jackson(SpringMvc内置解析器)

1>. Json转为Java对象

20190825110250421.png

2019082511010966.png

2>. Java对象转换Json

  • ①. void writeValue(参数1,obj);

20190825103318549.png


  • ②. String writeValueAsString(obj):将对象转为json字符串
 @Test
    public void fun1() throws Exception{
        //Java对象转为Json字符串
         //1.创建几个Person对象
        Person p=new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");
        //2.创建Jackson的核心对象,ObjectMapper
        ObjectMapper mapper=new ObjectMapper();
        //3.调用方法转换
        /*
          转换方法:
          writeValue(参数1,obj);
          参数1:
               File:将obj对象转换为JSON字符串,并保存到指定的文件中
               Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
               OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
          writeValueAsString(obj):将对象转为json字符串
        * */
        String string = mapper.writeValueAsString(p);
        System.out.println(string);//{"name":"张三","age":23,"gender":"男"}
    }

20190825103557876.png

  • ③. @JsonIgnore:排除属性 @JsonFormat:属性值格式化

20190825104359401.png

3>. 集合:数组的格式

  • [{“id”:1,“username”:“小智”},{“id”:2,“username”:“小幸”},{“id”:3,“username”:“洋洋”}]

2019090422191253.png

4>. Map:对象格式一致

20190904222200532.png

4. 案列

  • 校验用户名是否存在

20190825120143424.png

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
</head>
<body>
<form action="">
    <input type="text" id="username" name="username" placeholder="请输入用户名"/>
    <span id="s_username"></span>
    <input type="password" name="password" placeholder="请输入密码"/>
    <input type="submit" value="注册"/>
</form>
<script src="jq/jquery-1.11.0.min.js"></script>
<script>
     $(function () {
       //给username绑定一个blur
       $("#username").blur(function () {
           //获取username文本输入框的值
           var val = $(this).val();
           //发送ajax请求
           $.get("/findUserServlet",{username:val},function (data) {
               alert(data);
            //期望服务器响应回的数据格式是:
            // { "userExist":true,"msg":"此用户名太受欢迎,请更换一个" }
            // { "userExist":false,"msg":"用户名可用" }
               //判断userExist键的值是否是true
               if(data.userExist){
                   //用户名存在
                   //设置样式
                   $("#s_username").css("color","red");
                   $("#s_username").html(data.msg);
               }else{
                   //用户名不存在
                   $("#s_username").css("color","green");
                   $("#s_username").html(data.msg);
               }
           }/*,"json"*/);
       });
     });
</script>
</body>
</html>
@WebServlet("/findUserServlet")
public class FindUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     //浏览器告诉服务器要用什么类型的数据去接收
     response.setContentType("application/json;charset=utf-8");
     //1.获取用户名
     String username=request.getParameter("username") ;
     //2.调用service层判断用户名是否存在
        // { "userExist":true,"msg":"此用户名太受欢迎,请更换一个" }
        // { "userExist":false,"msg":"用户名可用" }
     Map<String,Object> map=new HashMap<>();
     if ("tom".equals(username)){
         //用户名存在
         map.put("userExist",true);
         map.put("msg","此用户名太受欢迎,请更换一个");
     }else{
         //用户名不存在
         map.put("userExist",false);
         map.put("msg","用户名可用");
     }
     //将map转为json,并且传递给客户端浏览器
     ObjectMapper mapper=new ObjectMapper();
     //数据传递给客户端浏览器
     mapper.writeValue(response.getWriter(),map);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

20190825120224722.png

相关文章
|
3月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
49 1
|
4月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
67 1
|
3月前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
195 61
C# 中的 XML 与 JSON 数据处理
|
2月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
244 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
494 0
|
3月前
|
JSON 前端开发 JavaScript
JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
Filter过滤器、Listener监听器、AJAX、 同步、异步优点和使用场景、Axios异步框架、JSON、js和JSON转换、案例,Axios + JSON 品牌列表查询和添加
JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON
|
4月前
|
XML 前端开发 JavaScript
Ajax(Asynchronous JavaScript and XML)
【8月更文挑战第16天】
34 3
|
4月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
104 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
4月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
58 0
|
4月前
|
XML JSON 前端开发
JSON与AJAX:网页交互的利器
JSON与AJAX:网页交互的利器
41 0