《研磨struts2》第十四章 对Ajax的支持 之 14.1 Ajax基础
14.1 Ajax基础
14.1.1 Ajax概述
Ajax(Asynchronous JavaScript And XML)技术,通常翻译成“异步JavaScript和xml”,它能让应用程序以异步的方式连接到服务器,等待服务器处理后获取返回值,从而实现无需刷新页面就可以与后台通讯的方式。
Ajax技术其实是一个非常老的技术,2000年左右就已经有了,只不过一直没有得到重视,直到Google把这个技术应用到Gmail和Google Maps里面,其异步的功能特性迅速走红,从而引起业界广泛的关注,得到更多的应用。到了web2.0的时代,Ajax成为了web2.0的核心技术之一。
Ajax的核心技术包括:
- XMLHttpRequest对象:用来实现异步通讯的组件对象,是Ajax的核心技术
- Javascript:Ajax的编程脚本,可以通过Javascript来操作Ajax
- Dom(Document Object Model)模型:Javascript通过Dom跟页面进行交互
- XML:可扩展标记语言,用来封装交互的数据
虽然xml是Ajax的核心技术之一,但是完全可以不使用xml,而且现在在实际项目开发中,也大有使用JSON来代替xml的趋势。
14.1.2 XMLHttpRequest对象
这里简单的介绍一下Ajax的这个核心对象的基本用法:
1:如何初始化
要使用XMLHttpRequest对象,首先就是要初始化这个对象,示例代码如下:
<script language="javascript">
var myReq;
function t1(){
//对于IE浏览器,第一种方式
myReq = new ActiveXObject("Msxml2.XMLHTTP");
//对于IE浏览器,第二种方式
myReq = new ActiveXObject("Microsoft.XMLHTTP");
//对于Mozilla浏览器
myReq = new XMLHttpRequest();
}
</script> 2:XMLHttpRequest对象的属性

3:XMLHttpRequest对象的方法

14.1.3 Ajax示例
虽然不详细去讲述Ajax的知识,还是通过一个基本的示例来看看如何使用Ajax技术。更多Ajax的知识,有需要的朋友请参阅相应的Ajax资料。
使用Ajax来实现一个输入校验的功能,用户填写数据,当光标离开输入框后,自动到后台去校验输入是否正确,并给出相应的提示信息。
1:先来实现后台的功能
为了演示的简洁性,直接就在jsp里面实现。功能也很简单,就是判断用户的输入是否重复了,如果不重复,提示用户“输入正确”;如果重复了,提示用户“输入不正确,请重新输入”。
后台文件的名称为server.jsp,示例代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.util.*"%>
<head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"></head>
<%
String account = request.getParameter("account");
//准备已经注册的数据,测试使用
Set<String> set = new HashSet<String>();
set.add("account1");
set.add("account2");
set.add("account3");
if(set.contains(account)){
out.print("输入不正确,请重新输入");
}else{
out.print("输入正确");
}
%> 2:实现前台页面的功能
在页面上除了简单的输入框之外,就是要实现Ajax的功能,当帐号信息输入完毕,光标离开的时候,提交到后台进行校验。
文件的名称为client.jsp,示例代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"></head>
<script language="javascript">
var myRequest;
function t1(){
//准备向后台传输的数据
var account = document.getElementById("account").value;
//Ajax
myRequest = new ActiveXObject("Msxml2.XMLHTTP");
myRequest.onreadystatechange = t2;
myRequest.open("GET","server.jsp?account="+account,true);
myRequest.send(null);
}
function t2(){
if(myRequest.readyState==4){
var ret = myRequest.responseText;
//后续处理
document.all("myDiv").innerHTML = ret;
}
}
</script>
<form action="" medhot="post">
<table>
<tr>
<td colspan=3 align=center>新用户注册</td>
</tr>
<tr>
<td>用户帐号:</td>
<td><input type="text" id="account" name="account" onblur="t1();"><font color=red>*</font></td>
<td><div id="myDiv"></div></td>
</tr>
<tr>
<td>用户密码:</td>
<td colspan=2><input type="password" id=""password" name="password"></td>
</tr>
<tr>
<td>重复密码:</td>
<td colspan=2><input type="password" id=""password2" name="password2"></td>
</tr>
<tr>
<td colspan=3 align=center><input type="submit" value="保存注册信息"></td>
</tr>
</table>
</form> 3:运行测试一下
先输入一个正确的,运行结果如下:

图14.1 Ajax示例一
再来输入一个重复的,比如“account1”之类的,运行结果如下:

图14.2 Ajax示例二
通过上面的示例,大家可以初步体会一下Ajax实现的方式,以及无需刷新页面即可与后台交互的实现。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4128.html】
欢迎访问http://sishuok.com获取更多内容
相关推荐
结束数据方法的参数,该如何定义?-- 集合为自定义实体类中的结合属性,有几个实体类,改变下标就行了。<input id="add" type="button" value="新增visitor&quo