InstelliJ IDEA使用js+servlet+ajax入门
对于Ajax,我们先了解三点(完整的JS代码在后面)
一、Ajax的出现对javascript的影响。
Ajax是微软提出的一种允许客户端脚本发送HTTP请求的技术(XMLHTTP),拯救了大多数java程序员讨厌的javascript
二、浏览器兼容性
想使用Ajax得创建一个对象,就是它
new XMLHttpRequest();
但是,IE的低版本不支持以上这种方式,IE真讨厌。。它支持这种方式,
new ActiveXObject("Microsoft.XMLHTTP");
三、异步与同步
通俗点的意思:
异步:就是大家想洗澡的时候一个开始脱衣服,后一个就开始脱衣服,不等前一个脱完。
同步:会等前一个人脱完再脱。。。
正题,如何使用Ajax
先创建一个web项目
打开web下的.jsp文件,首先使用html创建一个按钮,代码如下
<button onclick="ck();">点击</button>
然后在js部分我们先创建一个函数,叫做ajax_test(),代码如下
fuction ajax_test(){ }
上面我们说过了使用Ajax需要创建一个对象,但是需要判断是否为IE或者其他浏览器,代码如下
if(XMLHttpRequest){
return new XMLHttpRequest();
}else if(ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("其他浏览器!");
}
创建一个ck()函数接收ajax_test()返回的对象,我们需要使用带这个对象的方法
function ck(){
var xhr=ajax_test():
}
在这个对象中有两个方法,open()和send(),写入ck()中,分别用来准备和发送,
function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.send();
}
本来我们提交到服务器的需要用到表单,这会刷新一次网页,但是使用ajax可以实现局部刷新,所以open()代替了原来的表单提交。
open共有五个参数,后面两个参数为远程服务器交互的时候需要的用户名和密码,这里我们使用在同一个机器上的所以选择忽略,
第一个参数为提交的方式,为get和post提交,不区分大小写,第二个参数为Servlet的url(/项目名称/包/服务器类)可以在服务器查看request.getRequestURI(),可以在服务器查看是什么,第三个参数是否异步,可以不写,默认为异步
而我们send()的时候就会发送了。
这个时候我们在服务器写一个输出流,当Ajax访问服务器时,就会响应,
response.getWriter().print("访问到服务器");
Ajax中有一个属性为responseText,它的值为服务器响应的值,即"访问到服务器",我们需要在js的代码中打印出来,如下
function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.send();
alert("send");
alert(xhr.responseText);
}
那上面的代码为什么需要在打印出responseText前先打印send呢?因为它是异步,我们发送send()的时候还没有获取到服务器的响应(还没有ok),有一个属性为readyState,它有五个值(0~4)4代表ok,我们需要等他执行完为4的时候才能获取到
服务器的响应,那我们直接同步false不就可以了吗?同步的效率比异步慢,所以这个对象里有一个可以监听的方法,onreadystatechange,它可以解决这个问题,代码如下,必须写在send()前
xhr.onreadystatechange = function(){
alert(xhr.responseText);
}
js完整代码如下,服务器的代码只有一句输出流
<script>
function ajax_test(){
if(XMLHttpRequest){
return new XMLHttpRequest();
}else if(ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("其他浏览器");
}
}
function ck(){
var xhr=ajax_test();
xhr.open("GET","/ajax_test/p1/Servlet1",true);
xhr.onreadystatechange = function(){
alert(xhr.responseTex);
}
xhr.send();
}
</script>
以上为我接触Ajax的理解,今天就到这里,有不懂的地方可以问下我,有空回复。
---2019-5-23 从沙尘暴中逃出的你已不再是跨入沙尘暴时的你《海边的卡夫卡》。
InstelliJ IDEA使用js+servlet+ajax入门的更多相关文章
- JavaWeb(HTML +css+js+Servlet....)
注意 1.不要把函数命名为add(),不然容易和自带的冲突报错 2.是createElement 不要把create中的e写掉了 3.记得是getElementsByTaxName和getElemen ...
- JavaEE的ajax入门
JavaEE的ajax入门 代码下载 链接:https://pan.baidu.com/s/1pb_sdSmV9Ncs6UIz3q2ztg 提取码:fgx6 复制这段内容后打开百度网盘手机App,操作 ...
- prototype.js 和 jQuery.js中 ajax 的使用
这次还是prototype.js 和 jQuery.js冲突的问题,前面说到过解决办法http://www.cnblogs.com/Joanna-Yan/p/4836252.html,以及上网说的大部 ...
- ajax入门之建立XHR对象 (1)
ajax入门之建立XHR对象 今天帮朋友写了一个简单的ajax的demo,发现了一些东西,决定写一篇文章记录一下,避免以后挖坑. 创建XMLHttpRequest 通常 function create ...
- Vue (一) --- vue.js的快速入门使用
=-----------------------------------把现在的工作做好,才能幻想将来的事情,专注于眼前的事情,对于尚未发生的事情而陷入无休止的忧虑之中,对事情毫无帮助,反而为自己凭添 ...
- ASP.NET AJAX入门系列
ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...
- 系列文章--ASP.NET之AJAX入门教程
ASP.NET AJAX入门系列将会写关于ASP.NET AJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新. 目录 ASP.NET A ...
- 【JS】AJAX跨域-被调用方与调用方解决方案(二)
解决跨域问题 跨域问题说明,参考[JS]AJAX跨域-JSONP解决方案(一) 实例,使用上一章([JS]AJAX跨域-JSONP解决方案(一))的实例 解决方案三(被调用方支持跨域-服务端代码解决) ...
- Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...
随机推荐
- 【Java 语言生态篇】Junit 测试单元
01 概述 JUnit是一个由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是白盒测试.JUn ...
- TopCoder<SRM>上的一道1100分的题目解析附代码
首先我们来简单看一下这道题的statement Problem Statement Note that in the following problem statement, all quo ...
- 分享知识-快乐自己:SpringMvc中的单多文件上传及文件下载
摘要:SpringMvc中的单多文件上传及文件下载:(以下是核心代码(拿过去直接能用)不谢) <!--设置文件上传需要的jar--> <dependency> <grou ...
- IoC~MVC3+EF+Autofac实现松耦合的系统架构
MVC3+EF+Autofac网上这种文章确实没有,呵呵,今天就写一个,代大家分享! 这个系列的文章将带我们进入一种新的开发模式,注入开发模式,或者叫它IOC模式,说起IOC你可以这样去理解它,它为你 ...
- 「NOIP2017」「LuoguP3952」 时间复杂度(模拟,栈
题目描述 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序 ...
- transition插件
$("#box").transition({ opacity: 0.1, scale: 0.3 }); $("#box").transition({ opaci ...
- 一致性哈希算法原理、避免数据热点方法及Java实现
一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似.一致性哈希修正了CARP使用的简 单 ...
- 湖南程序设计竞赛赛题总结 XTU 1237 Magic Triangle(计算几何)
这个月月初我们一行三人去湖南参加了ccpc湖南程序设计比赛,虽然路途遥远,六月的湘潭天气燥热,不过在一起的努力之下,拿到了一块铜牌,也算没空手而归啦.不过通过比赛,还是发现我们的差距,希望这几个月自己 ...
- CentOS虚拟机通过主机WIFI上网
0 环境简介 环境如下: (1)宿主机为WIN7系统,连接内网,同时通过本机的WIFI上外网: (2)虚拟机为VMWare12下的CentOS7系统. 1 虚拟机设置 选择NAT 模式: 2 宿主机W ...
- SoapUI登录测试(2)-- 断言
SoapUI登录测试(1)的结果为: 可以看到只有第2步是成功的,1.3的结果是unKnown,这里并没有对1.3两步添加断言,判断testCase中的这2步是否通过. 一.添加断言 1. /logi ...