开发者社区> 邵鸿鑫> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java——Ajax+Tomcat完成异步请求

简介:   Ajax最为网页异步交互技术相信大家并不陌生,这里我也不做过多介绍,详情点击(百度百科)。很多框架也封装了Ajax技术,使用起来更加简单,比如jQuery等等,这里为了了解原理,我们使用原生的Ajax。
+关注继续查看

  Ajax最为网页异步交互技术相信大家并不陌生,这里我也不做过多介绍,详情点击(百度百科)。很多框架也封装了Ajax技术,使用起来更加简单,比如jQuery等等,这里为了了解原理,我们使用原生的Ajax。

  我们以注册用户时,判断用户ID是否存在为例,实现一个最简单的异步请求,当我们鼠标离开输入框时自动判该用户ID是否存在,同时我们可以继续填写其他注册信息。

界面如下:


HTML代码:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><input name="userId" type="text" class="text1" id="userId"
								size="10" maxlength="10" onkeypress="userIdOnKeyPress()" value="<%=userId %>" onblur="validate(this)">
								<span id="spanUserId"></span></span>

创建Ajax核心对象XMLHttpRequest:

<span style="font-family:KaiTi_GB2312;font-size:18px;">var xmlHttp;
	 
	function createXMLHttpRequest() {
		//表示当前浏览器不是ie,如ns,firefox
		if(window.XMLHttpRequest) {
			xmlHttp = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}</span>

光标离开响应事件

<span style="font-family:KaiTi_GB2312;font-size:18px;">function validate(field) {
		//alert(document.getElementById("userId").value);
		//alert(field.value);
		if (trim(field.value).length != 0) {
			//创建Ajax核心对象XMLHttpRequest
			createXMLHttpRequest();
			
			var url = "user_validate.jsp?userId=" + trim(field.value) + "&time=" + new Date().getTime();
			
			//设置请求方式为GET,设置请求的URL,设置为异步提交
			xmlHttp.open("GET", url, true);
			
			//将方法地址复制给onreadystatechange属性
			//类似于电话号码
			xmlHttp.onreadystatechange=callback;
			
			//将设置信息发送到Ajax引擎
			xmlHttp.send(null);
		} else {
			document.getElementById("spanUserId").innerHTML = "";
		}	
	}</span>

Ajax引擎状态改变时回调方法

<span style="font-family:KaiTi_GB2312;font-size:18px;">function callback() {
		//alert(xmlHttp.readyState);
		//Ajax引擎状态为成功
		if (xmlHttp.readyState == 4) {
			//HTTP协议状态为成功
			if (xmlHttp.status == 200) {
				if (trim(xmlHttp.responseText) != "") {
					//alert(xmlHttp.responseText);
					document.getElementById("spanUserId").innerHTML = "<font color='red'>" + xmlHttp.responseText + "</font>"
				}else {
					document.getElementById("spanUserId").innerHTML = "";
				}
			}else {
				alert("请求失败,错误码=" + xmlHttp.status);
			}
		}</span>

  目标jsp(设置休眠时间5秒,如果异步请求设置为false的话,这5秒钟内用户不能进行任何操作)

<span style="font-family:KaiTi_GB2312;font-size:18px;"><%
	Thread.currentThread().sleep(5000);
	String userId = request.getParameter("userId");
	if (UserManager.getInstance().findUserById(userId) != null) {
		out.println("用户代码已经存在");
	}	
%></span>

  因为我们这里给大家演示异步请求,所以异步请求值设为了true,这段时间内用户是可以继续输入其他信息的,等到5秒时间到了,会自动弹出用户已经存在

效果图


  Ajax 的核心是 JavaScript 对象 XmlHttpRequest,它是一种支持异步请求的技术。简而言之,XmlHttpRequest 使您可以使用 JavaScript 向服务器提出请求并处理响应,而不阻塞用户。以上内容为实践中总结的经验,有不足之处请大家批评指正。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
原生AJAX实现异步请求
原生AJAX实现异步请求
0 0
第106天:Ajax中同步请求和异步请求
同步请求和异步请求的区别 1、同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 用户填写所有信息后,提交给服务器,等待服务器的回应(检验数据),是一次性的。信息错误又要重新填写! 2、异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
663 0
JQuery中使用Ajax实现诸如登录名检测等异步请求Demo
上一篇博客介绍了注册登录时一次性图形验证码的工具类的编写,这篇随笔同样是我在写用jquery中ajax实现登录信息检测的异步请求功能的笔记,在各个网站进行信息用户注册时,需要在不刷新页面的情况下对注册信息进行检测并实时返回信息,比如这种情况: 对于不需要访问数据库的页面验证比较简单,一旦需要访...
556 0
x-requested-with 判断是否是Ajax异步请求
x-requested-with XMLHttpRequest是Ajax 异步请求方式 使用 request.getHeader(“x-requested-with”); 为 null,则为传统同步请求; 为 XMLHttpRequest,则为 Ajax 异步请求。
673 0
Ajax基础 同步请求与异步请求
Ajax基础讲义  使用XMLHttpRequest发送异步请求   使用XMLHttpRequest对象发送请求的三个步骤: · 创建XHR对象 · 准备请求数据,发送请求 · 当响应到达后,处理响应     1.如何创建XMLHttpRequest对象:  var xhr;                          if (window.XMLHt
1340 0
jQuery封装Ajax,SpringMVC使用Ajax的配置
jQuery封装Ajax,SpringMVC使用Ajax的配置
0 0
JQuery Ajax实现三级联动
本文实例为大家分享了ajax实现三级联动的具体代码
0 0
+关注
邵鸿鑫
java相关技术专家
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java Spring Boot开发实战系列课程【第7讲】:Spring Boot 2.0安全机制与MVC身份验证实战(Java面试题)
立即下载
Java 8 简明教程
立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战
立即下载