ajax 技术总结

来源:互联网 发布:海文考研怎么样知乎 编辑:程序博客网 时间:2024/06/05 17:11
一、如何创建一个web项目
1、建立一个普通java项目
2、在项目下建立一个folder,命名为WebRoot,然后在该文件夹下再新建一个folder,命名为WEB-INF。
3、在WEB-INF下新建两个folder,分别命名为lib和classes 。其中lib存放项目的jar包,而classes存放项目编译好的文件。
4、把javaee.jar包复制到lib文件夹,然后导入到项目(导入的方法不解释)。
5、添加classes文件夹作为输出路径,和导入jar包的菜单一样,然后选择source 。
6、在WEB-INF下新建一个xml文件,命名为web.xml 。(servlet的配置也是在该文件中添加)
7、最后是在tomcat的conf文件夹下的server.xml文件中添加该项目:
<host>
   <Context path="浏览器地址(例如:/PB_AjaxDemo)" docBase="项目的绝对路径(例如:E:\workspace1\PB_AjaxDemo\WebRoot)"></Context>
</host>
二、创建XMLHttpRequest对象的方法。
if(window.XMLHttpRequest){
xmlHttpRequest = new XMLHttpRequest();
}else{
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
三、javascript知识
1、判断文本框输入是否为空可以使用if(!uname),其中uname为文本框输入内容,当!uname为真时,则表示文本框内容为空。
2、文本框获得焦点的方法是  文本框对象.focus() 方法 。
四、XMLHttpRequest对象的方法
1、open(strMethod,strUrl,strAsync,strUser,strPasswd) 用于创建一个新的http请求,其中前三个参数是必须的,后两个是可选的,第一个参数是指请求的方式,常用post或get ;第二个参数是请求的url地址,相当于表单中提交的地址 ; 第三个参数是代表是否采用异步处理,true为采用(默认) ;第四和第五个代表访问地址所需的用户名和密码 。
2、send(varObject) 用于发送请求和接收回应 ,选择post提交方式时才需要填参数,采用get方式时参数填入null 。
3、abort()方法用于取消请求 。
4、setRequestHeader(strHeader,strValue)此方法的作用是单独指定请求的http头,第一个参数是指头名称,第二个参数是指值
5、getResponseHeader()此方法用于获取响应中指定的http头,当send方法成功之后才能调用此方法 。
6、getAllResponseHeader()此方法是获取所有响应的http头(对比上一个方法),也是在send方法成功之后才能调用,每个HTTP头和值用冒号分隔,并以\n结束 。
五、XMLHttpRequest对象的属性
1、readyState 此属性返回请求的当前状态。有0-4五个状态,0为未初始化,即未调用open方法;1为未调用send方法;2为调用了send方法,但是当前状态和http头未知 ; 3为数据传送中,还没有传送完; 4为数据已经全部接收
2、status为返回当前请求的http状态码,返回的是长整型。常用的有404 找不到访问地址,200代表已经正确的返回 等等 。
3、responseText将返回消息作为文本字符串
4、responseXML将返回消息视为xml文档
5、statusText将返回当前请求的响应行状态
6、onreadystatechange设置回调函数 。
六、使用Ajax发送get请求的步骤:
1、var url = "/PB_AjaxDemo/doReg?uname="+uname ; //设置请求url,由于是使用get方式,所以在地址中需添加参数
2、创建XMLHttpRequest对象
3、xmlHttpRequest.onreadystatechange = 回调函数名 ;//设置回调函数,回调函数的作用是处理服务器返回的文本或xml内容
4、xmlHttpRequest.open("GET",url,true) ;//调用open方法
5、xmlHttpRequest.send(null);//调用send方法
回调函数实例:
function haoLeJiaoWo(){
 if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){  //判断如果数据已经全部发送,而且服务器正确返回
    var b = xmlHttpRequest.responseText;  //获取返回字符串
    b = b.replace(/(^\s*)|(\s*$)/g,"");   //去掉空格
    if(b=="true"){  
 .....    
    }else{
 .....
    }
}
}
七、使用Ajax发送post请求的步骤:
1、var url = "/PB_AjaxDemo/doReg" ; //设置请求url,由于是使用post方式,所以在地址中不需添加参数
2、var userinfo = "uname="+uname ;//创建表单对象,此对象是由键和值组成,多个键值的话使用&符合连接;
3、创建XMLHttpRequest对象
4、xmlHttpRequest.onreadystatechange = 回调函数名 ;//设置回调函数,回调函数的作用是处理服务器返回的文本或xml内容
5、xmlHttpRequest.open("POST",url,true) ;//调用open方法
6、xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//设置请求http头,说明采用表单形式提交数据
7、xmlHttpRequest.send(userinfo);//调用send方法,记得把表单对象作为参数
八、处理xml响应内容的方法
1、xmlHttpRequest的responseXML属性可以返回XmlDocument类型的对象 。
2、XmlDocument对象有几个常用方法,可以用于解析xml文档。
(1)getElementsByTagName(TagName) 用于获取指定节点名的节点对象集合
(2)selectSingleNode()用于获取符合条件的单个节点对象,参数是XPath表达式(相关资料自己找)
(3)selectNodes() 用于获取符合条件的节点集合,参数是XPath表达式(相关资料自己找)
九、服务器如何处理请求的数据
1、以下是服务器端servlet的部分代码:
public void doGet(HttpServletRequest request,HttpServletResponse response)
 throws IOException{
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  String uname = request.getParameter("uname");  //获取请求数据
  boolean uExists = false;
  if("accp".equals(uname)){
   uExists = true;
   out.print(uExists);
  }else{
   out.print(uExists);
  }
  out.flush();
  out.close();
 }
2、对于返回xml格式的内容的方法类似,利用StringBuilder对象拼接字符串,把xml文档的内容当字符串拼接 。需要注意的是上述代码的对应内容需要修改成以下:
response.setContentType("text/xml;charset=UTF-8");