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入门的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ij编写Servlet的生命周期?

ij里面怎么添加prettier插件

IntelliJ IDEA

IJ:Idea 常用代码

html页面里的ajax调用servlet,html里没有form表单

IDEA 关于maven项目引入css ,js,image文件 路径的问题