1. 程式人生 > >用ajax實現檢測註冊使用者名稱是否重複的完整例子(一)

用ajax實現檢測註冊使用者名稱是否重複的完整例子(一)

網上搜索了很多案例,但都和自己的需求不一樣。 
最終實現了下面的例子實現了對註冊使用者名稱的校驗。採用的架構是servelet+jsp. ValidateName.java程式碼如下所示,並且採用userIsExist查詢資料庫看是否存在相同的使用者名稱。 

Java程式碼  

1.  package com.wuliu.test;  

2.  import java.io.IOException;  

3.  import java.io.PrintWriter;  

4.    

5.  import javax.servlet.ServletException;  

6.  import

 javax.servlet.http.HttpServlet;  

7.  import javax.servlet.http.HttpServletRequest;  

8.  import javax.servlet.http.HttpServletResponse;  

9.  import com.wuliu.dao.LoginDAO;  

10.  

11.public class ValidateName extends HttpServlet {  

12.    public ValidateName(){  

13.        super();  

14.    }  

15.

  

16.    public void doGet(HttpServletRequest request, HttpServletResponse response)  

17.            throws ServletException, IOException {  

18.  

19.        response.setContentType("text/html");  

20.        LoginDAO dao = new LoginDAO();  

21.        boolean flag = false;  

22.        String loginName=request.getParameter("loginName"

).toString();  

23.        flag = dao.userIsExist(loginName);  

24.        if(true == flag)  

25.        {  

26.            response.getWriter().write("true");//此值jquery可以接收到  

27.        }  

28.    }  

29.  

30.      

31.    public void doPost(HttpServletRequest request, HttpServletResponse response)  

32.            throws ServletException, IOException {  

33.  

34.        this.doGet(request, response);   

35.          

36.    }  

37.  

38.}  

Java程式碼  

1.  public boolean userIsExist(String loginId){  

2.                  System.out.println("Enter userIsExist");  

3.                  this.dao = new DBConnection();  

4.                  this.cn = this.dao.getConnection();  

5.                  // 根據指定使用者名稱查詢使用者資訊  

6.                  String sql = "select * from LoginTable where LoginId='"+loginId+"'";  

7.                  System.out.println("logid:"+loginId);  

8.                  try {  

9.                      // 獲取PreparedStatement物件  

10.                    this.ps = this.cn.prepareStatement(sql);  

11.                    // 對使用者物件屬性賦值  

12.                   // ps.setString(1, loginId);  

13.                    // 執行查詢獲取結果集  

14.                    rs = this.ps.executeQuery();  

15.                    // 判斷結果集是否有效  

16.                   // System.out.println("rs.next()= "+rs.next());  

17.                    if(false == rs.next()){  

18.                        // 如果無效則證明此使用者名稱可用  

19.                        System.out.println("使用者名稱可用");  

20.                        return true;  

21.                    }  

22.                    // 釋放此 ResultSet 物件的資料庫和 JDBC 資源  

23.                    rs.close();  

24.                    // 釋放此 PreparedStatement 物件的資料庫和 JDBC 資源  

25.                    ps.close();  

26.                } catch (SQLException e) {  

27.                    e.printStackTrace();  

28.                }finally{  

29.                    // 關閉資料庫連線  

30.                    this.dao.closeConnection(cn);  

31.                }  

32.                System.out.println("使用者名稱不可用");  

33.                return false;  

34.            }  



由此就可以實現註冊的時候,校驗註冊使用者名稱是否已經存在的功能了。 
JSP頁面程式碼: 

Html程式碼  

1.  <form action="register.do?action=add" onsubmit="return submessage(this)" method="post" name="form1">  

2.          <table border="1" width="500" cellspacing="1" cellpadding="3" align="left" bordercolor="#326598" >  

3.              <tr>  

4.                  <td colspan="7" bgcolor="#FEA817">  

5.                      [align=center]  

6.                          <font color="#FFFFFF"><b>使用者註冊</b> </font>  

7.                      [/align]  

8.                  </td>  

9.              </tr>  

10.             <tr>  

11.                 <td>  

12.                     使用者名稱  

13.                 </td>  

14.                 <td>  

15.                     <input name="uname" id="username" type="text" class="form_text" size="20" onblur="validatorloginName()">        

16.                 </td>  

17.             </tr>  

18.               

19.             <tr>  

20.                 <td>  

21.                     登陸密碼  

22.                 </td>  

23.                 <td>  

24.                     <input type="password" name="upwd">  

25.                 </td>  

26.             </tr>  

27.             <tr>  

28.                 <td>  

29.                     確認密碼  

30.                 </td>  

31.                 <td>  

32.                     <input type="password" name="upwd1">  

33.                 </td>  

34.             </tr>  

35.             <tr>  

36.                 <td colspan="2" align="center">  

37.                     <input type="submit" value="提交">  

38.                     <input type="reset" value="重置">  

39.                 </td>  

40.             </tr>  

41.         </table>  

42.                 </form>  


頁面上新增的ajax元件: 

Html程式碼  

1.  function validatorloginName(){  

2.           var loginName=document.getElementById("uname").value;  

3.           if(loginName == "")  

4.           {  

5.              alert("使用者名稱不能為空!");  

6.              return;  

7.           }  

8.           $.ajax({  

9.                  type: "POST",      

10.                  url: "ValidateName",      

11.                   data: "loginName="+loginName,   

12.                  success: function(data){  

13.                 if(data=="true"){     

14.                  alert("恭喜您!使用者名稱沒有被使用!");    

15.                  

16.                 }else{     

17.                  alert("抱歉!使用者名稱已存在!");     

18.                 }   

19.                 }            

20.                 });     

21.         }         


通過ajax將註冊使用者名稱傳送到ValidateName.do進行校驗。 

web.xml裡面配置如下: 

Xml程式碼  

1.  <servlet>  

2.      <description>This is the description of my J2EE component</description>  

3.      <display-name>This is the display name of my J2EE component</display-name>  

4.      <servlet-name>ValidateName</servlet-name>  

5.      <servlet-class>com.wuliu.test.ValidateName</servlet-class>  

6.    </servlet>  

7.    

8.    <servlet-mapping>  

9.      <servlet-name>ValidateName</servlet-name>  

10.     <url-pattern>/ValidateName</url-pattern>  

11.   </servlet-mapping>  

ValidateName.java程式碼如下所示,並且採用userIsExist查詢資料庫看是否存在相同的使用者名稱。 

Java程式碼  

1.  package com.wuliu.test;  

2.  import java.io.IOException;  

3.  import java.io.PrintWriter;  

4.    

5.  import javax.servlet.ServletException;  

6.  import javax.servlet.http.HttpServlet;  

7.  import javax.servlet.http.HttpServletRequest;  

8.  import javax.servlet.http.HttpServletResponse;  

9.  import com.wuliu.dao.LoginDAO;  

10.   

11. public class ValidateName extends HttpServlet {  

12.     public ValidateName(){  

13.         super();  

14.     }  

15.   

16.     public void doGet(HttpServletRequest request, HttpServletResponse response)  

17.             throws ServletException, IOException {  

18.   

19.         response.setContentType("text/html");  

20.         LoginDAO dao = new LoginDAO();  

21.         boolean flag = false;  

22.         String loginName=request.getParameter("loginName").toString();  

23.         flag = dao.userIsExist(loginName);  

24.         if(true == flag)  

25.         {  

26.             response.getWriter().write("true");//此值jquery可以接收到  

27.         }  

28.     }  

29.   

30.       

31.     public void doPost(HttpServletRequest request, HttpServletResponse response)  

32.             throws ServletException, IOException {  

33.   

34.         this.doGet(request, response);   

35.           

36.     }  

37.   

38. }  

Java程式碼  

1.  public boolean userIsExist(String loginId){  

2.                  System.out.println("Enter userIsExist");  

3.                  this.dao = new DBConnection();  

4.                  this.cn = this.dao.getConnection();  

5.                  // 根據指定使用者名稱查詢使用者資訊  

6.                  String sql = "select * from LoginTable where LoginId='"+loginId+"'";  

7.                  System.out.println("logid:"+loginId);  

8.                  try {  

9.                      // 獲取PreparedStatement物件  

10.                     this.ps = this.cn.prepareStatement(sql);  

11.                     // 對使用者物件屬性賦值  

12.                    // ps.setString(1, loginId);  

13.                     // 執行查詢獲取結果集  

14.                     rs = this.ps.executeQuery();  

15.                     // 判斷結果集是否有效  

16.                    // System.out.println("rs.next()= "+rs.next());  

17.                     if(false == rs.next()){  

18.                         // 如果無效則證明此使用者名稱可用  

19.                         System.out.println("使用者名稱可用");  

20.                         return true;  

21.                     }  

22.                     // 釋放此 ResultSet 物件的資料庫和 JDBC 資源  

23.                     rs.close();  

24.                     // 釋放此 PreparedStatement 物件的資料庫和 JDBC 資源  

25.                     ps.close();  

26.                 } catch (SQLException e) {  

27.                     e.printStackTrace();  

28.                 }finally{  

29.                     // 關閉資料庫連線  

30.                     this.dao.closeConnection(cn);  

31.                 }  

32.                 System.out.println("使用者名稱不可用");  

33.                 return false;  

34.             }  



由此就可以實現註冊的時候,校驗註冊使用者名稱是否已經存在的功能了。