java无感刷新 javaweb局部刷新
转载
AJAX
全局刷新与局部刷新
- 全局刷新:整个浏览器都被新的数据覆盖,在网络中传输大量的数据,浏览器需要加载,渲染页面。
- 局部刷新:在浏览器的内部发起请求,获取数据,改变页面中的部分内容,其余的页面无需加载和渲染。网络中数据传输量少,用户体验更好
- ajax是用来做局部刷新的,局部刷新使用的核心是异步对象(XMLHttpRequest),这个异步对象是存在于浏览器内存中的,使用javascript语法创建和使用XMLHTTPRequest对象。
AJAX是什么
- AJAX:Asynohronous JavaScript And XML(异步的JavaScript和XML)。
- Asynohronous:异步的意思
- JavaScript:Javascript脚本
- XML:是一种数据格式
- ajax是一种局部刷新的新方法(2003),不是一种语言,ajax包含的技术主要有JavaScript,dom,xml,css等等,核心是JavaScript和XML
- JavaScript:负责创建异步对象,发送请求,更新页面的dom对象。ajax请求需要服务器端的数据。
- XML:网络中的传输的数据格式。现在使用json替换了xml
AJAX异步实现步骤
- 创建对象: var xmlHttp = new XMLHttpRequest();
- 绑定事件(onreadystatechange事件):onreadystatechange:当异步对象发起请求,获取了数据都会触发这个事件。这个事件需要指定一个函数,在函数中处理状态的变化。
1. xmlHttp.onreadystatechange = function() {
//处理请求的状态变化
if(xmlHttp.readystate == 4 && xmlHttp.status == 200) {
//可以处理数据,更新页面
var data = xmlHttp.responseText;
document.getElementById("name").value = data;
}
}
- 初始异步请求对象: //xmlHttp.open(请求方式get/post,“服务端的访问地址”,同步/异步(默认是true异步))
xmlHttp.open("get","/myWeb/loginServlet?name=123&pwd=123",true);
- 使用异步对象发送请求: xmlHttp.send()
- 获取服务端返回的数据,使用异步对象的属性responseText var data = xmlHttp.responseText
- 属性说明:
- onreadystatechange属性:当异步对象发起请求,获取了数据都会触发这个事件。这个事件需要指定一个函数或者直接定义函数,在函数中处理状态的变化。
- readystate属性:存有XMLHttpRequest的状态,从0到4发生变化
- 0:请求未初始化,创建异步请求对象,var xmlHttp = new XMLHttpRequest();
- 1:初始化异步请求对象,xmlHttp.open(请求方式,请求地址,true)
- 2:异步对象发送请求,xmlHttp.send()
- 3:异步对象接收应答数据从服务器返回数据,XMLHttpRequest内部处理。
- 4:异步请求对象已经将数据解析完毕,此时才可以读取数据。开发人员更新页面
- status属性:表示网络请求的状况,需要status == 200时,表示网络请求是成功的
使用JSON替代XML作为返回数据格式
- 为什么使用JSON
- json格式容易理解
- json格式数据在多种语言中,比较容易处理。使用java,JavaScript读写json格式的数据比较容易
- json格式数据它占用的空间下,网络传输快,用户体验好
- 处理JSON的工具库
- Gson(google)
- FastJson(Alibaba):速度快,但不符合标准
- Jackson:性能好,规范好
- json-lib:性能差,依赖多
- Jackson的使用 TestClass testClass = new TestClass();
ObjectMapper om = new ObjectMapper();
String json = om.writeValueAsString(testClass);
- 在js中将json格式的字符串转为json对象 var data = xmlHttp.responseText
//eval是执行括号中的代码,将json字符串转为json对象
var jsonObj = eval("("+data+")");
同步和异步的区别
- 异步请求:不用等待数据处理完毕,就可以执行其他操作
- 同步请求:必须处理完成请求,从服务器端获取数据后,才能执行send之后的代码,任意时刻只能执行一个请求
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。