基於ajax的簡單的登入驗證

來源:互聯網
上載者:User

  Ajax是多種技術的集合(Asynchronous JavaScript and XML)

   1.JavaScript負責操作XMlHttpRequest對象來跟資料庫打交道    2.DOM(文件物件模型)負責資料的動態顯示和互動    3.XML(可擴充標識語言)負責資料的交換和處理    4.XMLHttpRequest負責資料的非同步讀取    5.XHTML(可擴充超文字標記語言 (HTML))和CSS(層疊樣式表)編寫結構化的web頁面    6.json

   優點
   1.無重新整理請求處理資料。
   缺點
  1.要求IE5.0,Mozilla1.0,NetScape7以上。
  2.對流媒體和PDA之類的支援不是很好。

Ajax的一般流程(Request/Server模式)
對象初始化--->發送請求--->伺服器接受--->伺服器響應並返回--->用戶端接受--->修改用戶端頁面內容

首先寫一個JSP頁面(裡麵包含JS代碼),如下:

Code:
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <html>  
  3.   <head>  
  4.   <title> 登入頁面 </title>  
  5.   <link rel=stylesheet href="css/login.css" type="text/css">  
  6.   <script type="text/javascript">  
  7.   //聲明一個全域的XMLHttpRequest對象   
  8.   var xmlhttp_request;   
  9.   //聲明一個標籤   
  10.   var message;   
  11.   function check(){   
  12.   var username=document.getElementById("usernameID").value;   
  13.    message=document.getElementById("message");   
  14.   message.innerHTML="正在檢測使用者名稱.....";   
  15.   try{     
  16. //用於擷取支援IE瀏覽器的XMLHttpRequest對象   
  17. if(window.ActiveXObject){      
  18. for( var i = 5;i; i-- ){      
  19. try{      
  20. if( i == 2 ){      
  21. xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");//大於5.0      
  22. //   
  23. alert("1:"+xmlhttp_request.readyState);   
  24. }   
  25. else{   
  26. xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );////3.0或4.0, 5.0    
  27. xmlhttp_request.setRequestHeader("Content-Type","text/xml");    
  28. xmlhttp_request.setRequestHeader("Charset","gb2312");   
  29.  }      
  30.  break;   
  31.  }catch(e){   
  32.  xmlhttp_request = false;    
  33.  }   
  34.   }   
  35.    }   
  36.    else if(window.XMLHttpRequest)//非IE瀏覽器Mozilla﹑Netscape﹑Safari等瀏覽器    
  37.    {   
  38.    xmlhttp_request = new XMLHttpRequest();   
  39.    if (xmlhttp_request.overrideMimeType){   
  40.     xmlhttp_request.overrideMimeType('text/xml');    
  41.     }   
  42.      }    
  43.      }   
  44.      catch(e){   
  45.       xmlhttp_request = false;    
  46. }   
  47. //開啟一個串連   
  48. alert("2:"+xmlhttp_request.readyState);   
  49. alert(username);   
  50. //xmlhttp_request.open("get","http://localhost:8080/ajax/check?name="+username,true);   
  51. xmlhttp_request.open("post","http://localhost:8080/ajax/check",true);   
  52. //POST請求要佈建要求頭   
  53. xmlhttp_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");   
  54. //指定處理伺服器端相應的函數   
  55. alert("3:"+xmlhttp_request.readyState);   
  56. xmlhttp_request.onreadystatechange=handle;   
  57. //get發送請求   
  58. //xmlhttp_request.send(null);   
  59. //post發送請求   
  60. xmlhttp_request.send("name="+username);   
  61. }   
  62.   
  63. function handle(){   
  64. alert("4:"+xmlhttp_request.readyState);   
  65. if(xmlhttp_request.readyState==4){   
  66. alert(xmlhttp_request.status);   
  67. if(xmlhttp_request.status==200){   
  68. var result=xmlhttp_request.responseText;   
  69. alert(result);   
  70. message.innerHTML=result;   
  71. alert("5:"+xmlhttp_request.readyState);   
  72. }   
  73. }   
  74. }    
  75.   
  76.   </script>  
  77.   </head>  
  78.   <body>  
  79.   <h1 align="center">使用者登入頁面</h1>  
  80.   <hr color="blue">  
  81.    <div align="center">  
  82.    <form action="login.do" method="post">  
  83.    <table  cellspacing=5 border=5 bodercolor=#ffaa00 >  
  84.    <tr><th colspan="3" align="center"  bgcolor=#ffaa00>使用者登入</th></tr>  
  85.    <tr>  
  86.    <th rowspan="3" background="images/2.jpg" style="width=90px"></th>  
  87.    <td>使用者名稱:</td><td><input id="usernameID" type="text" class="message" name="username" onBlur="check()"><label id="message"></label></td></tr>  
  88.    <tr><td>密  碼:</td><td><input id="userpasswordID" class="message" type="password" name="userpassword" ></td></tr>  
  89.     <tr><td colspan="2" align="center"><input type="submit" value="註冊">  <input type="reset" value="重設"></td></tr>  
  90.    </table>  
  91.    </form>  
  92.    </div>  
  93.   </body>  
  94. </html>  

本頁面中的重點就是js代碼中的xmlhttp_request對象,它是XMLHTTP組件的對象,XMLHttpRequest對象在大部分瀏覽器上已經實現而且擁有一個簡單的介面允許資料從用戶端傳遞到服務端,但並不會打斷使用者當前的操作。使用XMLHttpRequest傳送的資料可以是任何格式,雖然從名字上建議是XML格式的資料。

接下來我們寫一個寫一個serlet來處理xmlhttp_request對象發送過來的資料,當前例子傳送的資料為username的值,如下:

Code:
  1. package myclass.serlet;   
  2.   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5.   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. public class Check extends HttpServlet {   
  12.        
  13.     protected void service(HttpServletRequest request, HttpServletResponse response)   
  14.     throws ServletException, IOException {   
  15.         //輸出資料流   
  16.         PrintWriter out=null;   
  17.         out=response.getWriter();   
  18.         String name=request.getParameter("name");   
  19.         System.out.print(name);   
  20.         if("liping".equals(name)){   
  21.             out.println("sorry,user name:"+name+" has existed");   
  22.         }else{   
  23.             out.println("congratulation,user name: "+name+" can use");   
  24.         }   
  25.         out.flush();   
  26.         out.close();   
  27.     }   
  28. }   

servlet中使用printwriter輸出資料流來向用戶端返回處理結果,前面JS中使用function handle()函數來處理,這樣就實現了AJAX局部重新整理。使用者在填寫使用者名稱後,游標一離開,就產生一個onchange()事件,使用者名稱的值就立刻通過xmlhttp_request對象對值傳到servlet中進行驗證,驗證後馬上把資訊返回,顯示到頁面,實現了局部重新整理的效果。

這就是AJAX。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.