用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" 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>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Ajax技术实现检测注册用户名是否重复,具体实现步骤如下: 1. 在注册页面添加一个用户名输入框和一个检测按钮。 2. 当用户输入完用户名后,点击检测按钮触发Ajax请求。 3. 在Ajax请求中,将用户名作为参数传递给服务器端。 4. 服务器端根据传递的用户名,在数据库中查询是否存在相同的用户名。 5. 服务器端将查询结果返回给客户端。 6. 客户端接收到服务器端返回的结果后,根据结果提示用户该用户名是否可用。 以下是一个简单的Ajax实现检测注册用户名是否重复的示例代码: ``` // HTML代码 <input type="text" id="username" /> <button onclick="checkUsername()">检测用户名</button> // JavaScript代码 function checkUsername() { var username = document.getElementById("username").value; var xhr = new XMLHttpRequest(); xhr.open("POST", "check_username.php", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var result = xhr.responseText; if (result == "exist") { alert("该用户名已存在,请重新输入!"); } else { alert("该用户名可用!"); } } }; xhr.send("username=" + username); } // PHP代码(check_username.php) $username = $_POST["username"]; // 在数据库中查询是否存在相同的用户名 if (存在相同的用户名) { echo "exist"; } else { echo "not exist"; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值