AJAX
- 在传统的Web应用模型下,客户机 (浏览器或者本地机器上运行的代码)向服务器发出请求。该请求是同步的,客户机等待服务器的响应。
- 这正是传统Web 应用程序让人感到笨拙或缓慢的原因 —— 缺乏真正的交互性。按下按钮时,应用程序实际上变得不能使用,直到刚刚触发的请求得到响应。如果请求需要大量服务器处理,那么等待的时间可能很长
- 传统的web应用程序缺点
- 用户发送完请求,等待服务器请求处理完毕的将响应信息发送到浏览器,在此之前用户不能继续其他操作。
- 多数请求只需要更新页面的局部内容,但是传统web应用程序无法有效进行局部内容的更新。
- Ajax的出现,打破了web应用程序的困局
- 什么是AJAX?
- Asynchronous JavaScript and XML
- 异步javascript和xml
- AJAX采用异步交互过程。AJAX在用户和服务器之间提供了一个中间的媒介(ajax引擎),从而消除了传统web应用程序请求->处理请求(用户等待)->响应的缺陷
- AJAX不是一项新技术,而是一些列成熟技术的新应用
- AJAX中包含的技术
- HTML和CSS 用于数据呈现和样式
- DOM 实现页面动态显示和交互
- XML 实现数据的交换与处理
- XMLHttpRequest对象进行异步请求
- JavaScript将以上技术融合在一起
- 为什么要使用AJAX
- 改善表单验证方式,不再需要打开新页面,也不再需要将整个页面数据提交
- 不需刷新页面就可改变页面内容,减少用户等待时间
- 按需获取数据,每次只从服务器端获取需要的数据 。
- 读取外部数据,进行数据处理整合 。
- 异步与服务器进行交互,在交互过程中用户无需等待,仍可继续操作
原生JS实现AJAX的操作:
- 开发AJAX应用的步骤
- 创建XMLHttpRequest对象
- 注册XMLHttpRequest对象请求状态改变时的回调函数
- 调用XMLHttpRequest对象的open方法打开请求连接
- 调用XMLHttpRequest对象的send方法发送请求
- XMLHttpRequest对象
- XMLHttpRequest对象是JavaScript标准内置对象,AJAX请求和响应的处理皆是通过该对象的方法和属性完成。
- 在IE6之前的IE版本中,XMLHttpRequest对象是由ActiveXObject形式提供,自IE7+,所有主流浏览器都可以直接通过XMLHtttpRequest创建该对象的实例
XMLHttpRequest对象属性和方法
方法/属性 |
方法/属性说明 |
setRequestHeader(name,value) 方法 |
设置请求头信息 |
open(method,url,asyn,user,password)方法 |
通过指定请求方法和URL打开本次请求HTTP连接 |
send(queryString) 方法 |
发送本次AJAX请求,该方法参数为请求参数 |
abort() 方法 |
终止本次ajax请求 |
getAllResponseHeaders() 方法 |
获取所有响应头信息 |
getResponseHeader(name) 方法 |
获取指定头的头信息 |
onreadystatechange 属性 |
AJAX请求状态发生改变时,会调用为该属性注册的回调函数 |
readyState 属性 |
用于表示请求状态,请求状态值以及它的含义分别为: 0=未初始化、1=正在加载、2=已经加载、3=交互中、4=完成 |
status 属性 |
表示响应状态码,如404、500、200等 |
responseText 属性 |
表示服务器端响应的字符串数据 |
responseXML属性 |
表示服务器端响应的XML数据 |
- jQuery作为最流行JS方法库,同样也提供AJAX支持,简化基于AJAX请求的web应用程序开发。
- jQuery提供的进行AJAX请求的常用方法有:
- ajax(url[,setting]),该方法是jQuery的AJAX最底层实现,通过该方法可以完成复杂的AJAX请求处理,通常建议使用基于它的高层方法开发AJAX应用程序,如get方法和post方法
- get(url[,data][,callback][,type]),该方法是jQuery用于发送get方式AJAX请求的便捷方法,必需参数url用于指定处理请求的url,可选参数data用于指定请求参数,可选参数callback用于指定请求处理成功后的回调函数,可选参数type用于指定响应数据类型
- post(url[,data][,callback][,type]),该方法是jQuery用于发送post方式AJAX请求的便捷方法,参数与get方法相同
JSON
什么是JSON?
-
- JavaScript Object Notation
- 是一种轻量级的数据交换格式
- JSON是存储和交换文本信息的语法,类似 XML。
- JSON易于人阅读和编写。同时也易于机器解析和生成
- JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯,这些特性使JSON成为理想的数据交换语言。
- JSON 比 XML 更小、更快,更易解析
JSON主要作用?
-
- 用于数据传输和交换
- JSON有两种语法结构
- JSON对象
- JSON数组
JSON对象的语法
- “ 名称/值”对的集合,类似于Java语言中HashMap
- JSON对象是一个无序的"名/值"对的集合,名与值之间使用":"分割。示例:{"name":"张三","age":20}
- JSON数组的语法
- 值的有序列表,在大部分语言中,它被理解为数组(array或List)。
- 一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”分隔。如: ["张三","王五","田七"]
JSON数组的语法:
- JSON值可以是以下类型:
- 数字
- 字符串
- 逻辑类型
- JSON数组
- JSON对象
- null
- 示例:
{
"name":"张三","sex":"男","age":20,"married":true,
"address":{"province":"河北省","city":"石家庄市"}
}
Java中使用JSON数据:
- JSON对象以键值对形式存在,类似语句Java中的Map集合;而JSON数组则类似Java中数组或者List集合。
- 基于以上类比关系,Java开发人员可以很顺利的将Java中的对象、数组、集合等构建为JSON格式数据。
- 通常我们会使用第三方类库完成对Java中数据和JSON格式数据之间相互转换的功能。
- 常见的Java第三方json操作类库有:
- json-lib :sourceforge提供的json生成解析库
- gson :google提供的json生成解析库
- fastjson : 阿里巴巴提供json生成解析库
- jackson
- 以上这些第三方类库的使用方式、包括提供的类名和方法相似。
生成JSON数据:
- 通过json-lib下的两个核心类可以完成JSON数据的生成操作
- net.sf.json.JSONObject : 用于生成JSON对象格式的数据
- net.sf.json.JSONArray :用于生成JSON数组格式的数据
- JSONObject生成JSON对象格式数据常用方法
- static JSONObject fromObject(Object obj) 将Java对象转换为JSON
- Object put(Object key,Object value) 将键值对放置到JSON对象中
- String toString() 将JSON对象转换为JSON对象格式的字符串
- JSONArray生成JSON对象格式数据常用方法
- static JSONArray fromObject(Object obj) 将Java对象转换为JSON
- Object add(Object obj) 将Java对象添加到JSON数组中
- String toString() 将JSON数组转换为JSON数组格式字符串