用ajax实现检测注册用户名是否重复的完整例子
ValidateName.java代码如下所示,并且采用userIsExist查找数据库看是否存在相同的用户名。
package com.wuliu.test;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.wuliu.dao.LoginDAO;public class ValidateName extends HttpServlet {public ValidateName(){super();}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");LoginDAO dao = new LoginDAO();boolean flag = false;String loginName=request.getParameter("loginName").toString();flag = dao.userIsExist(loginName);if(true == flag){response.getWriter().write("true");//此值jquery可以接收到 }}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doGet(request, response); }}
public boolean userIsExist(String loginId){ System.out.println("Enter userIsExist");this.dao = new DBConnection();this.cn = this.dao.getConnection(); // 根据指定用户名查询用户信息String sql = "select * from LoginTable where LoginId='"+loginId+"'";System.out.println("logid:"+loginId);try { // 获取PreparedStatement对象 this.ps = this.cn.prepareStatement(sql); // 对用户对象属性赋值 // ps.setString(1, loginId); // 执行查询获取结果集 rs = this.ps.executeQuery(); // 判断结果集是否有效 // System.out.println("rs.next()= "+rs.next()); if(false == rs.next()){ // 如果无效则证明此用户名可用 System.out.println("用户名可用"); return true; } // 释放此 ResultSet 对象的数据库和 JDBC 资源 rs.close(); // 释放此 PreparedStatement 对象的数据库和 JDBC 资源 ps.close(); } catch (SQLException e) { e.printStackTrace(); }finally{ // 关闭数据库连接 this.dao.closeConnection(cn); } System.out.println("用户名不可用"); return false; }
<form action="register.do?action=add" onsubmit="return submessage(this)" method="post" name="form1"><table border="1" width="500" cellspacing="1" cellpadding="3" align="left" bordercolor="#326598" ><tr><td colspan="7" bgcolor="#FEA817">[align=center]<font color="#FFFFFF"><b>用户注册</b> </font>[/align]</td></tr><tr><td>用户名</td><td><input name="uname" id="username" type="text" size="20" onblur="validatorloginName()"> </td></tr><tr><td>登陆密码</td><td><input type="password" name="upwd"></td></tr><tr><td>确认密码</td><td><input type="password" name="upwd1"></td></tr><tr><td colspan="2" align="center"><input type="submit" value="提交"><input type="reset" value="重置"></td></tr></table></form>
<script src="/js/jquery/jquery-1.3.2.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> function validatorloginName(){ var loginName=document.getElementById("uname").value; if(loginName == "") { alert("用户名不能为空!"); return; } $.ajax({ type: "POST", url: "ValidateName", data: "loginName="+loginName, success: function(data){ if(data=="true"){ alert("恭喜您!用户名没有被使用!"); }else{ alert("抱歉!用户名已存在!"); } } }); }</script>
<servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>ValidateName</servlet-name> <servlet-class>com.wuliu.test.ValidateName</servlet-class> </servlet> <servlet-mapping> <servlet-name>ValidateName</servlet-name> <url-pattern>/ValidateName</url-pattern> </servlet-mapping>