`
anmo_china
  • 浏览: 15609 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
最近访客 更多访客>>
社区版块
存档分类
最新评论

验证用户名简单示例

    博客分类:
  • Ajax
阅读更多
验证用户名是否存在
在js文件中主要需要4步
    1、获取页面参数
    2、对参数值可行性的验证
    3、将数据发送到服务器中
    4、在回调函数中将服务器返回的值,写到html页面上

主要业务流程如下
步骤1:准备客户端html页面:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>使用jquery做用户名验证</title> 
    <script type="text/javascript" src="jslib/jquery.js"></script>
     <script type="text/javascript" src="jslib/verify1.js"></script>
</head>
<body>
    用户名:<input type="text" id="username" onblur="verify()"/>&nbsp;<span id="result"></span><br/>
    密码:<input type="text" id="password"><br/>
</body>
</html>

步骤2:服务器servlet代码
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by IntelliJ IDEA.
 * User: Administrator
 * Date: 2009-10-22
 * Time: 10:28:07
 * To change this template use File | Settings | File Templates.
 */
public class validateUserServlet extends HttpServlet {
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //1.取参数
        String old = request.getParameter("username");
        //2.检查参数是否有问题
        if(old == null || old.length()==0){
            out.println("用户名不能为空");
        }else{
            //3.校验操作
            String username = old;
            if(username.equals("anmo")){
                //4.和传统应用不同之处,这一步需要将用户感兴趣的数据返回给页面段,而不是将一个新页面发送给用户
                out.println("用户名["+username+"]已经存在,请使用其他用户名");
            }else{
                out.println("你可以使用此用户名!!!");
            }
        }
    }
}

步骤3:准备JS文件,(本示例用了两个一个是jquery.js,一个是自己定义的js文件)下面的代码是自己定义的js
//定义用户名校验的方法
function verify(){
    //1.获取文本框中的内容
    //使用DOM方式获取:document.getElementById("username");
    var jqueryObj = $("#username");    //使用JQuery方式查找节点
    //2.取值
    var username = jqueryObj.val();
    //将文本框中的数据发送给服务器端的servlet
    $.get("validateUserServlet?username="+username,null,callback);         //使用jquery的XMLHTTTRequest对象get请求封装
}
//回调函数
function callback(data){
    //3.接受客户端返回的数据
    //alert(data);   //data中是服务器返回给页面的值
    //4.将服务器端返回的数据动态的显示在页面上
    var resultObj = $("#result");
    //动态改变页面中span中的内容
    resultObj.html(data);
}


到此,整个示例已经完了,也可以将js文件中的代码细化,细化后代码如下
function verify(){
    //去出页面中的值
    var username = $("#username").val();
    //将值发送到服务器,进行验证,并且处理完后回调callback函数,将服务器返回的数据发送到页面显示
    $.get("validateUserServlet?username="+username, null, function callback(data){
        $("#result").html(data);
    });
}



-------------------------------------------------------------------------------
如果不想使用jquery的话,可以自己写ajax应用,来验证用户名
//用户名校验
//这个方法是用XMLHTTPRequert对象进行AJAX的异步交互

var xmlhttp;
function verify(){
    //第一步:使用DOM方式获取文本框中的数据
    var username = document.getElementById("username").value;

    //使用XMLHTTPRequert对象,这个XMLHttpRequest对象是使用中最复杂的一部,要兼容各个浏览器
    if(window.XMLHttpRequest){
        //针对FireFox,Mozillar,Opera,Safari,IE7,IE8
        xmlhttp = new XMLHttpRequest();
        //针对某些特定版本的mozillar浏览器的BUG进行修正
        if(xmlhttp.overrideMimeType){
            xmlhttp.overrideMimeType("text/xml");
        }
    }else if(window.ActiveXObject){
        //针对IE6,IE5.5,IE5
        //将两个可以用户创建XMLHTTPRequest对象的控件名称,保存在一个JS的数组中
        //排在前面的版本较新
        var activexName = ["MXXML2.XMLHTTP","Microsoft.XMLHTTP"];
        //循环创建ActiveXObject
        for(var i = 0; i < activexName.length; i++){
            try{
                //取出一个控件名进行创建,如果创建成功就终止循环
                //如果创建失败,就抛出异常,然后可以继续循环,继续尝试创建
                xmlhttp = new ActiveXObject(activexName[i]);
                break;
            }catch(e){
            }
        }
    }

    //第二步:注册回调函数,调用回调函数的时候不能加括号
    //我们需要将函数名注册,如果加上括号,就会把函数的返回值注册上,这就错误的
    xmlhttp.onreadystatechange = callback;

    //第三步:设置连接信息
    //第1个参数是表示http请求方式,支持所有http请求方式,主要是get和post
    //第2个参数表是url地址,get方式请求的参数也在url中
    //第3个参数表示采用异步还是同步方式交互,true表示异步
    xmlhttp.open("GET", "validateUserServlet?username="+username, true);

    //第四步,发送数据,开始和服务器端进行交互
    //如果是同步的话,当代码运行到shend()的时候就会停住,直到服务器端的数据完全返回才运行
    //如果是异步的话,shend会立即完成执行
    xmlhttp.send(null);
}

//回调函数
function callback(){
    //第五步,判断对象的状态是交互完成
    if(xmlhttp.readyState == 4){
        //判断http的交互是否成功
        if(xmlhttp.status == 200){
            //获取服务器端返回的数据
            //以存文本的方式获取
            var responseText = xmlhttp.responseText;
            //将数据显示在页面上
            document.getElementById("result").innerHTML = responseText;
        }
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics