简单ajax应用实例:ajax+jsp实现用户名验证

来源:互联网 发布:java统计数字出现次数 编辑:程序博客网 时间:2024/06/14 12:55

转载出处:http://blog.csdn.net/javaalpha/article/details/6559176


[c-sharp] view plain copy
  1. ajax是个好东西,本文简单介绍ajax+jsp实现用户名验证的方法。  
  2. html页面:  
  3. <html>  
  4. <title>AJAX实例:对用户名的校验</title>  
  5. <!-- 引入verify.js -->  
  6. <mce:script type="text/<a href="http://lib.csdn.net/base/javascript" class='replace_word' title="JavaScript知识库" target='_blank' style='color:#df3434; font-weight:bold;'>JavaScript</a>" src="verify.js" mce_src="verify.js"></mce:script>  
  7. <body>  
  8.    <!-- AJAX方式下不需要用表单来提交数据,因此不用写表单标签 -->  
  9.    <!-- AJAX方式不需要name属性,需要id属性 -->  
  10.    输入用户名后,当光标离开用户名输入框,即响应onblur事件。  
  11.    用户名:<input type="text" id="username" onblur="verify()"/>  
  12.    密   码:<input type="text" id="password"/>  
  13.      
  14.    <!-- 这个div用来存入服务器返回的信息,开始为空 -->  
  15.    <!-- id属性定义是为了利用dom的方式找到一个节点进行操作 -->  
  16.    <div id="result"></div>  
  17.      
  18. </body>  
  19.   
  20. verify.js文件  
  21. //定义XMLHttpRequest对象  
  22. var xmlhttp;  
  23. function verify(){  
  24.     var username=document.getElementById("username").value;  
  25.       
  26.       
  27.     //创建XMLHttpRequest对象  
  28.       
  29.     if(window.XMLHttpRequest){  
  30.       //针对FireFox,Mozillar,Opera,Safari,IE7,IE8  
  31.        xmlhttp = new XMLHttpRequest();  
  32.          
  33.        //对某些特定版本的mozillar浏览器的bug进行修正  
  34.        if(xmlhttp.overrideMineType){  
  35.           xmlhttp.overrideMineType("text/xml");  
  36.        }  
  37.     }else if(window.ActiveXObject){  
  38.        //针对IE5,IE5.5,IE6  
  39.          
  40.        //两个可以用于创建XMLHTTPRequest对象的控件名称。保存在一个JS数组中。  
  41.        var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];  
  42.        for(var i = 0; i<activeName.length; i++){  
  43.            //取出一个控件名进行创建,如果成功就终止循环  
  44.            try{  
  45.               xmlhttp = new ActiveXObject(activexName[i]);  
  46.               break;  
  47.            }catch(e){}  
  48.        }         
  49.          
  50.     }  
  51.       
  52.     if(xmlhttp){  
  53.        alert("XMLHttpRequest对象创建成功!");  
  54.        return;  
  55.     }else{  
  56.        alert("XMLHttpRequest对象创建失败!");  
  57.     }  
  58.       
  59.       
  60.     //注册回调函数,只写函数名,不能写括号,写括号表示调用函数。  
  61.     xmlhttp.onreadystatechange = callback;  
  62.       
  63.     //设置连接信息(请求方式,请求的url,true表示异步方式交互)  
  64.     xmlhttp.open("GET","AJAXServer?name=" + username, true);  
  65.         
  66.     //发送数据,开始和服务器进行交互。  
  67.     xmlhttp.send(null);  
  68.       
  69.       
  70.     //使用POST方式请求,需要手动设置http的请求头  
  71.     //xmlhttp.setRequestHeader("Content-Type","aplication/x-www-form-urlencoded");  
  72.     //xmlhttp.send("name=" + username);  
  73.       
  74. }  
  75.   
  76. //回调函数  
  77. function callback(){  
  78.    //判断对象的状态是否交互完成  
  79.    if(xmlhttp.readyState == 4){  
  80.      
  81.       //判断http的交互是否成功  
  82.       if(xmlhttp.status == 200){  
  83.         
  84.          //获取服务器端返回的数据(文本)  
  85.          var resbonseText = xmlhttp.responseText;  
  86.            
  87.          //将数据显示在页面上  
  88.          var divNode = document.getElementById("result");  
  89.            
  90.          //设置元素节点中的html内容  
  91.          divNode.innerHTML = responseText;  
  92.            
  93.       }  
  94.         
  95.    }  
  96. }  
  97.    
  98. 后台servlet程序代码:  
  99.   
  100. public class AJAXServer extends HttpServlet{  
  101.     protected void doPost(httpServletRequest request, HttpServletResbonse resbonse)throws ServletException,IOException{  
  102.     doGet(request, resbonse);  
  103.     }  
  104.       
  105.     protected void doGet(httpServletRequest request, HttpServletResbonse resbonse)throws ServletException,IOException{  
  106.     try{  
  107.         request.setCharacterEncoding("utf-8");  
  108.         resbonse.setContentType("text/html; charset=utf-8");  
  109.         PrintWriter out = resbonse.getWriter();  
  110.         String old = request.getParameter("name");  
  111.         if(old == null || old.length() == 0){  
  112.         out.println("用户名不能为空!");  
  113.         }else{  
  114.              String name = old;  
  115.              if(name.equals("zhangsan")){  
  116.              out.println("用户名[" + name + "]已经存在!");  
  117.              }else{  
  118.                  out.println("用户名[" + name + "]尚未存在,可以使用!");  
  119.              }  
  120.         }  
  121.     }catch(Exception e){  
  122.        e.printStackTrace();  
  123.     }  
  124.       
  125.     }  
  126. }  

 

 

说明:
1.onreadystatechange 请求状态改变的事件触发器(readyState变化时会调用此方法)
2.readyState有五中状态:
   readyState = 0 未初始化
   readyState = 1 表示open方法成功调用
   readyState = 2 服务器已经应答客户端请求 
   readyState = 3 交互中。Http头信息已经接收,响应数据尚未接收。
   readyState = 4 数据接收完成。


0 1