Ajax之部分小结

Ajax之部分小结
Ajax:(Asynchronous JavaScript And XML) 异步的JS和XML
主要用于JS和后台服务器的通信
常规的和后台通信机制:
1)浏览器向服务器发送请求
2)服务器向浏览器发送响应
3)浏览器接受响应后,刷新整个页面
Ajax和后台的通信机制:
1)JS向服务器发送请求
2)服务器向JS发送响应
3)JS接受响应后,更新页面的部分内容
优点:
速度快、提高用户体验

Ajax的原生JS实现
XMLHttpRequest 类
提供JS和后台的通信功能
创建:
var xhr = new XMLHttpRequest();
PS:IE5\6支持ActiveXObject
主要方法:
open(“GET/POST”,“服务器的URL”,是否异步)
打开连接,向服务器发送请求,是否异步为false为同步,需要等待服务器的响应,推荐使用true异步,不用等待服务器响应,不出现卡顿。
send(“字符串”)
给服务器发送数据,和POST请求配合,格式如:“username=zhang&password=123”
事件:
onreadystatechange 监听响应状态的变化
状态:
0 初始化状态
1 连接状态,调用open方法
2 发送状态,调用send方法
3 接受状态,开始接受服务器的数据
4 接受完成状态,完全接受数据
主要属性:
status 响应状态代码,如:404、500、200
(注意40X错误一般是前端代码的问题:如传参等,50X一般都是后台java代码的逻辑错误)
readyState 接受状态,0~4
responseText 服务器响应的文字
Ajax之部分小结
注意:服务器响应的数据必须以流的形式发送
Ajax在JQuery的实现
$.ajax({参数:“值”…})
参数:
url 服务器的地址
type 请求类型get/post
data 发送的数据
async 是否异步,true异步、false同步
success 接收数据成功的事件
error 接收失败的事件

$.post(
“URL”,
{参数:值…},
function(text){
}
)

$.get(
“URL?参数=值…”,
function(text){
}
)
表单重复提交问题
页面跳转:
1)重定向
2)forward
forward跳转后,浏览器的地址不会修改,会保留原来表单的数据,用户刷新页面会将表单重新提交给服务器,会增加服务器的负担,也可能添加重复数据到数据库。
解决方法:
1)重定向
2)Token令牌机制

  1. 进入JSP页面前,使用过滤器创建令牌(随机字符串),存入到Session中
    2)在JSP页面使用隐藏域保存令牌的值,和表单一起提交给服务器
    3)在Servlet中把表单中的令牌和Session中的令牌进行比较,如果相同就是正常提交,如果不相同就是重复提交
    4)在正常提交后,把Session中的令牌删除掉/**