您好,欢迎访问三七文档
AJAX实例入门网友评论0条转载到博客2007-7-715:59:22来源:本站整理顶一下最大的网站源码资源下载站,一、开门见山这些时间,瞎子也看得见,AJAX正大踏步的朝我们走来。不管我们是拥护也好,反对也罢,还是视而不见,AJAX像一阵潮流,席转了我们所有的人。关于AJAX的定义也好,大话也好,早有人在网上发表了汗牛充栋的文字,在这里我也不想照本宣科。只想说说我感觉到的一些优点,对于不对,大家也可以和我讨论:首先是异步交互,用户感觉不到页面的提交,当然也不等待页面返回。这是使用了AJAX技术的页面给用户的第一感觉。其次是响应速度快,这也是用户强烈体验。然后是与我们开发者相关的,复杂UI的成功处理,一直以来,我们对B/S模式的UI不如C/S模式UI丰富而苦恼。现在由于AJAX大量使用JS,使得复杂的UI的设计变得更加成功。最后,AJAX请求的返回对象为XML文件,这也是一个潮流,就是WEBSERVICE潮流一样。易于和WEBSERVICE结合起来。好了,闲话少说,让我们转入正题吧。我们的第一个例子是基于Servlet为后台的一个web应用。二、基于Servlet的AJAX这是一个很常见的UI,当用户在第一个选择框里选择ZHEJIANG时,第二个选择框要出现ZHEJIANG的城市;当用户在第一个选择框里选择JIANGSU时,第二个选择框里要出现JIANGSU的城市。首先,我们来看配置文件web.xml,在里面配置一个servlet,跟往常一样:web-appversion=2.4xmlns=:xsi=:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsdservletservlet-nameSelectCityServlet/servlet-nameservlet-classcom.stephen.servlet.SelectCityServlet/servlet-class/servletservlet-mappingservlet-nameSelectCityServlet/servlet-nameurl-pattern/servlet/SelectCityServlet/url-pattern/servlet-mapping/web-app然后,来看我们的JSP文件:!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.01Transitional//ENhtmlheadtitleMyHtml.html/titlemetahttp-equiv=keywordscontent=keyword1,keyword2,keyword3metahttp-equiv=descriptioncontent=thisismypage!--linkrel=stylesheettype=text/csshref=./styles.css--/headscripttype=text/javascriptfunctiongetResult(stateVal){varurl=servlet/SelectCityServlet?state=+stateVal;if(window.XMLHttpRequest){req=newXMLHttpRequest();}elseif(window.ActiveXObject){req=newActiveXObject(Microsoft.XMLHTTP);}if(req){req.open(GET,url,true);req.onreadystatechange=complete;req.send(null);}}functioncomplete(){if(req.readyState==4){if(req.status==200){varcity=req.responseXML.getElementsByTagName(city);file://alert(city.length);varstr=newArray();for(vari=0;icity.length;i++){str[i]=city[i].firstChild.data;}file://alert(document.getElementById(city));buildSelect(str,document.getElementById(city));}}}functionbuildSelect(str,sel){sel.options.length=0;for(vari=0;istr.length;i++){sel.options[sel.options.length]=newOption(str[i],str[i])}}/scriptbodyselectname=stateonChange=getResult(this.value)optionvalue=Select/optionoptionvalue=zjZEHJIANG/optionoptionvalue=zsJIANGSU/option/selectselectid=cityoptionvalue=CITY/option/select/body/html第一眼看来,跟我们平常的JSP没有两样。仔细一看,不同在JS里头。我们首先来看第一个方法:getResult(stateVal),在这个方法里,首先是取得XmlHttpRequest;然后设置该请求的url:req.open(GET,url,true);接着设置请求返回值的接收方法:req.onreadystatechange=complete;该返回值的接收方法为——complete();最后是发送请求:req.send(null);然后我们来看我们的返回值接收方法:complete(),这这个方法里,首先判断是否正确返回,如果正确返回,用DOM对返回的XML文件进行解析。关于DOM的使用,这里不再讲述,请大家参阅相关文档。得到city的值以后,再通过buildSelect(str,sel)方法赋值到相应的选择框里头去。最后我们来看看Servlet文件:importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/***@authorAdministrator**TODOTochangethetemplateforthisgeneratedtypecommentgoto*Window-Preferences-Java-CodeStyle-CodeTemplates*/publicclassSelectCityServletextendsHttpServlet{publicSelectCityServlet(){super();}publicvoiddestroy(){super.destroy();}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType(text/xml);response.setHeader(Cache-Control,no-cache);Stringstate=request.getParameter(state);StringBuffersb=newStringBuffer(state);if(zj.equals(state)){sb.append(cityhangzhou/citycityhuzhou/city);}elseif(zs.equals(state)){sb.append(citynanjing/citycityyangzhou/citycitysuzhou/city);}sb.append(/state);PrintWriterout=response.getWriter();out.write(sb.toString());out.close();}}这个类也十分简单,首先是从request里取得state参数,然后根据state参数生成相应的XML文件,最后将XML文件输出到PrintWriter对象里。到现在为止,第一个例子的代码已经全部结束。是不是比较简单?我们进入到第二个实例吧!这次是基于JSP的AJAX的一个应用。三、基于JSP的AJAX这个例子是关于输入校验的问题,我们知道,在申请用户的时候,需要去数据库对该用户性进行唯一性确认,然后才能继续往下申请。这种校验需要访问后台数据库,但又不希望用户在这里提交后等待,当然是AJAX技术大显身手的时候了。首先来看显示UI的JSP:!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.01Transitional//ENhtmlheadtitleCheck.html/titlemetahttp-equiv=keywordscontent=keyword1,keyword2,keyword3metahttp-equiv=descriptioncontent=thisismypage!--linkrel=stylesheettype=text/csshref=./styles.css--/headscripttype=text/javascriptvarhttp_request=false;functionsend_request(url){//初始化、指定处理函数、发送请求的函数http_request=false;file://开始初始化XMLHttpRequest对象if(window.XMLHttpRequest){file://Mozilla浏览器http_request=newXMLHttpRequest();if(http_request.overrideMimeType){//设置MiME类别http_request.overrideMimeType('text/xml');}}elseif(window.ActiveXObject){//IE浏览器try{http_request=newActiveXObject(Msxml2.XMLHTTP);}catch(e){try{http_request=newActiveXObject(Microsoft.XMLHTTP);}catch(e){}}}if(!http_request){//异常,创建对象实例失败window.alert(不能创建XMLHttpRequest对象实例.);returnfalse;}http_request.onreadystatechange=processRequest;//确定发送请求的方式和URL以及是否同步执行下段代码http_request.open(GET,url,true);http_request.send(null);}//处理返回信息的
本文标题:AJAX实例入门
链接地址:https://www.777doc.com/doc-5124313 .html