ij idea使用js+servlet+ajax入门
Posted zemengcheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ij idea使用js+servlet+ajax入门相关的知识,希望对你有一定的参考价值。
对于Ajax,我们先了解三点(完整的JS代码在后面)
一、Ajax的出现对javascript的影响。
Ajax是微软提出的一种允许客户端脚本发送HTTP请求的技术(XMLHTTP),拯救了大多数java程序员讨厌的javascript
二、浏览器兼容性想使用Ajax得创建一个对象,就是它
1 new XMLHttpRequest();
但是,IE的低版本不支持以上这种方式,IE真讨厌。。它支持这种方式,
1 new ActiveXObject("Microsoft.XMLHTTP");
三、异步与同步
通俗点的意思:
异步:就是大家想洗澡的时候一个开始脱衣服,后一个就开始脱衣服,不等前一个脱完。
同步:会等前一个人脱完再脱。。。
正题,如何使用Ajax
先创建一个web项目
打开web下的.jsp文件,首先使用html创建一个按钮,代码如下
1 <button onclick="ck();">点击</button>
然后在js部分我们先创建一个函数,叫做ajax_test(),代码如下
1 fuction ajax_test(){ 2 3 }
上面我们说过了使用Ajax需要创建一个对象,但是需要判断是否为IE或者其他浏览器,代码如下
1 if(XMLHttpRequest){ 2 return new XMLHttpRequest(); 3 }else if(ActiveXObject){ 4 return new ActiveXObject("Microsoft.XMLHTTP"); 5}else{ 6 alert("其他浏览器!"); 7}
创建一个ck()函数接收ajax_test()返回的对象,我们需要使用带这个对象的方法
1 function ck(){ 2 var xhr=ajax_test(): 3 }
在这个对象中有两个方法,open()和send(),写入ck()中,分别用来准备和发送,
1 function ck(){ 2 var xhr=ajax_test(); 3 xhr.open("GET","/ajax_test/p1/Servlet1",true); 4 xhr.send(); 5 }
本来我们提交到服务器的需要用到表单,这会刷新一次网页,但是使用ajax可以实现局部刷新,所以open()代替了原来的表单提交。
open共有五个参数,后面两个参数为远程服务器交互的时候需要的用户名和密码,这里我们使用在同一个机器上的所以选择忽略,
第一个参数为提交的方式,为get和post提交,不区分大小写,第二个参数为Servlet的url(/项目名称/包/服务器类),可以在服务器查看是什么,第三个参数是否异步,可以不写,默认为异步
而我们send()的时候就会发送了。
这个时候我们在服务器写一个输出流,当Ajax访问服务器时,就会响应,
1 response.getWriter().print("访问到服务器");
Ajax中有一个属性为responseText,它的值为服务器响应的值,即"访问到服务器",我们需要在js的代码中打印出来,如下
1 function ck(){ 2 var xhr=ajax_test(); 3 xhr.open("GET","/ajax_test/p1/Servlet1",true); 4 xhr.send(); 5 alert("send"); 6 alert(xhr.responseText); 7 }
那上面的代码为什么需要在打印出responseText前先打印send呢?因为它是异步,我们发送send()的时候还没有获取到服务器的响应(还没有ok),有一个属性为readyState,它有五个值(0~4)4代表ok,我们需要等他执行完为4的时候才能获取到
服务器的响应,那我们直接同步false不就可以了吗?同步的效率比异步慢,所以这个对象里有一个可以监听的方法,onreadystatechange,它可以解决这个问题,代码如下,必须写再send()前
1 xhr.onreadystatechange = function(){ 2 alert(xhr.responseText); 3 }
js完整代码如下,服务器的代码只有一句输出流
1 <script> 2 function ajax_test(){ 3 if(XMLHttpRequest){ 4 return new XMLHttpRequest(); 5 }else if(ActiveXObject){ 6 return new ActiveXObject("Microsoft.XMLHTTP"); 7 }else{ 8 alert("其他浏览器"); 9 } 10 } 11 function ck(){ 12 var xhr=ajax_test(); 13 xhr.open("GET","/ajax_test/p1/Servlet1",true); 14 xhr.onreadystatechange = function(){ 15 alert(xhr.responseTex); 16 } 17 xhr.send(); 18 } 19 </script>
以上为我接触Ajax的理解,今天就到这里,有不懂的地方可以问下我,有空回复。
---2019-5-23,过几天就要高考了,不用高考的我居然会有考前焦虑症,啊啊啊,怎么才能完成别人对你的期待呢?我不清楚,因为我也没有经验,我就是单纯的喜欢了一个人6年而已。
以上是关于ij idea使用js+servlet+ajax入门的主要内容,如果未能解决你的问题,请参考以下文章