struts2+ajax实现异步验证实现
由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示。我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在这要对struts2和ajax进行整合,由于我还没把ajax的一些知识总结出来,所以在这也不提了,有关ajax的详细内容将会在以后的博客中写出来。现在我们就以我做的这个添加管理员,验证管理员的用户名是否存在来说一下这个struts2+ajax实现异步验证技术。
首先我们来看一下我们的form表单:
- <td>
- 用户名
- </td>
- <td>
- <input type="text" name="admin.username" value=""
- onblur="checkusername(this,'AdminAction!exists')" />
- </td>
- <td>
- <span id="namemessage" style="color: red;"></span>
- </td>
- </tr>
- <tr bgColor="#d6fdd0">
- <td>
- 密码
- </td>
- <td>
- <input type="password" name="admin.password" value="" />
- </td>
- <td>
- <span></span>
- </td>
- </tr>
我们可以看到当我们的用户名的文本域注册了一个onblur事件,当用户名这个文本域失去焦点的时候我们就会让他去执行checkusername方法,好,下面让我们来看一下我们的js是怎么实现的ajax:
- <script type="text/javascript">
- var xmlHttpRequest = null; //声明一个空对象以接收XMLHttpRequest对象
- function checkusername(field, url) {
- var uername = field.value;
- if (uername == "" || uername.length < 3) {
- document.getElementById("namemessage").innerHTML = "用户名应该不小于3位";
- return;
- } else {
- if (window.ActiveXObject) // IE浏览器
- {
- xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
- } else if (window.XMLHttpRequest) //除IE外的其他浏览器实现
- {
- xmlHttpRequest = new XMLHttpRequest();
- }
- if (null != xmlHttpRequest) {
- //当利用get方法访问服务器端时带参数的话,直接在"AjaxServlet"后面加参数, 下面send方法为参数null就可以,用post方法这必须在把参数加在send参数内,如下
- xmlHttpRequest.open("get", url+"?admin.username="+uername, true);
- //关联好ajax的回调函数
- xmlHttpRequest.onreadystatechange = ajaxCallback;
- //真正向服务器端发送数据
- // 使用post方式提交,必须要加上如下一行,get方法就不必加此句
- xmlHttpRequest.setRequestHeader("Content-Type",
- "application/x-www-form-urlencoded");
- xmlHttpRequest.send(null);
- }
- }
- }
- function ajaxCallback() { //ajax一次请求会改变四次状态,所以我们在第四次(即一次请求结束)进行处理就OK,
- if (xmlHttpRequest.readyState == 4) { //请求成功
- if (xmlHttpRequest.status == 200) {
- var responseText = xmlHttpRequest.responseText;
- document.getElementById("namemessage").innerHTML = responseText;
- }
- }
- }
- </script>
通过上面的注释我想大家应该能看懂一些内容吧,我们首先去验证填写的内容是否为空,如果为空就给用户以提示。如果不为空的话就去判断一下当前的浏览器,然后根据浏览器去设置xmlHttpRequest对象,xmlHttpRequest对象是什么东西呢?XMLHttpRequest 对象用于在后台与服务器交换数据的对象,他主要的作用:
· 在不重新加载页面的情况下更新网页
· 在页面已加载后从服务器请求数据
· 在页面已加载后从服务器接收数据
· 在后台向服务器发送数据
XMLHttpRequest是Ajax最核心的对象,它有以下几个重要的方法或属性:
    ●open():建立到服务器的新请求。
●send():向服务器发送请求。
●abort():退出当前请求。
●readyState:提供当前 HTML 的就绪状态。
●responseText:服务器返回的请求响应文本。
其中XMLHttpRequest 对象的 open() 方法有以下五个参数:
●request-type:发送请求的类型。典型的值是 GET 或 POST,但也可以发送 HEAD 请求。
●url:要连接的 URL。
●asynch:如果希望使用异步连接则为true,否则为 false。该参数是可选的,默认为 true。
●username:如果需要身份验证,则可以在此指定用户名。该可选参数没有默认值。
●password:如果需要身份验证,则可以在此指定口令。该可选参数没有默认值。
通常使用其中的前三个参数。事实上,即使需要异步连接,也应该指定第三个参数为 “true”。这是默认值,但坚持明确指定请求是异步的还是同步的更容易理解。
得到XMLHttpRequest 对象之后,我们就利用这个对象去后台执行我们的请求,在执行我们请求的时候一定要注意关联好我们的回调函数:xmlHttpRequest.onreadystatechange = ajaxCallback;这里的回调函数的名字可以随便起,并不是固定死的。我们可以看到我们上面的程序请求是发送给了AdminAction中的exists方法了,好,下面我们去action方法里面去看一下:
- public String exists() throws Exception{
- System.out.println(admin==null);
- boolean boo=dao.exists(admin.getUsername());
- //获取原始的PrintWriter对象,以便输出响应结果,而不用跳转到某个试图
- HttpServletResponse response = ServletActionContext.getResponse();
- //设置字符集
- response.setCharacterEncoding("UTF-8");
- PrintWriter out = response.getWriter();
- if(boo){
- //直接输入响应的内容
- out.println("*用户名已存在*");
- /**格式化输出时间**/
- out.flush();
- out.close();
- }
- out.println("*用户名可用*");
- return null;
- }
熟悉ajax的同学看到这段代码应该很清楚了吧。这里主要是利用了PrintWriter 来把我们的后台信息输出到我们的前台,这里我 就不详细解释了。好了,写到这,我们这个利用struts2+ajax实现的我们的异步验证。下面就是具体的实现效果:

struts2+ajax实现异步验证实现的更多相关文章
- struts2+ajax实现异步验证
		由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在 ... 
- formValidator向struts2 ajax传參验证
		话不多说,直接上代码 页面head里面的formvalidator验证配置 <script type="text/javascript"> $(document).re ... 
- ssm框架整合+Ajax异步验证
		SSM框架是目前企业比较常用的框架之一,它的灵活性.安全性相对于SSH有一定的优势.说到这,谈谈SSM和SSH的不同点,这也是企业常考初级程序员的面试题之一.说到这两套框架的不同,主要是持久层框架Hi ... 
- AJAX(二)-实现验证码异步验证功能
		案例实现效果 用户在前端输入验证码,按键收起触发异步验证,验证验证码的对错 前端代码 checkcode.jsp <%-- Created by IntelliJ IDEA. User: cxs ... 
- ssh整合问题总结--使用struts2+Ajax+jquery验证用户名是否已被注册
		在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,今天正好写了这个需求,把详细代码和所遇到的问题贴过来.在使用struts2+ajax时候,通常我们会返回json类型的数据,但是像上面 ... 
- ajax异步验证用户名密码,提示路径错误
		使用thinkphp框架异步验证用户名和密码的时候,ajax路径错误可能有多重情况.我遇到的是,我自感路径没问题,且先前使用无错.由于多人合作使用svn,所以在更新代码后,使用firebug显示一直是 ... 
- 利用js制作异步验证ajax方法()
		如何利用js写ajax异步验证.代码如下: window.onload = function(){ var name = document.getElementById('register-name- ... 
- MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证
		原文:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC中,关于往后台提交的方法有: 1.Html.BeginForm():同步 2.Ajax.BeginForm():异 ... 
- 表单验证--通过原生js模仿ajax的异步交互
		今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ... 
随机推荐
- python 函数/列表的应用
			enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')): print i,j 0 a1 b2 c ... 
- 多线程---优先级&yield方法
			优先级只有10级,1-10.最高10(java中用Thread.MAX_PRIORITY),最低1,中间级5. 设置优先级的方法是 线程对象.setPriority(5): yield : 暂停(不是 ... 
- NOIP2012-普及组复赛-第一题-质因数分解
			题目描述 Description 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数. 输入输出格式 Input/output 输入格式:输入只有一行,包含一个正整数n.输出格式:输出只 ... 
- C#整理 条件语句
			条件语句主要分为if else语句和switch case语句. if else语句主要分为四种格式: 1. if(表达式) {} 2.二选一 if(表达式) {} else {} 3.多选一 if( ... 
- 基于Flash与window平台本地程序通信实现媒体流发布
			0 Web场景下的媒体流发布可以采用Flash原生API实现,但是Flash H264视频压缩参数不可控.音频无法AAC编码,所以一般采用浏览器插件方式,但是浏览器插件有版本兼容问题.不稳定,所以可以 ... 
- java中Class对象详解
			java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式.所以只有弄清其中的原理,才可以深入理解.首先要生成Class对象,然后再生成Instance ... 
- 不安装oracle客户端,如何运行sqlplus
			1.软件下载 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 下载如下三个包: oracle-instantc ... 
- HDU 5366  The mook jong
			先暴力写了一个DFS,然后找规律.. #include<cstdio> #include<cstring> #include<cmath> #include< ... 
- APP测试中的头疼脑热:测试人员如何驱动开发做好自测
			如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最 ... 
- tomcat 高并发配置 与优化
			公司的一个服务器使用Tomcat6默认配置,在后台一阵全点击服务器就报废了,查了一下就要是PERMSIZE默认值过小造成(16-64) TOMCAT_HOME/bin/catalina.sh 添加一行 ... 
