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" class="form_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>
通过ajax将注册用户名发送到ValidateName.do进行校验。
页面上添加的ajax组件:
<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>
web.xml里面配置如下:
<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>