我们在做用户注册的时候,会验证该用户名或者邮箱是否已经被注册,然后给注册该用户进行提示来修改。下面谈谈我的实现方法,感觉可以用希望可以帮组到你,不好的地方希望给予指正:
我是用java+js来实现的,首先看下我的数据库,其中userInfo表中有字段userName,email,password,
我用的是ssh框架来做的,hibernate来管理和数据库的交互,struts来管理定位
首先看下效果:如下图所示
public String checkName() {
try {
listCheckName = this.userInfoService.checkname(userInfo
.getUserName());
if (listCheckName.size() == 1) {
System.out.println("该用户名已经被占用" + listCheckName.size());
this.setResult("1");
return SUCCESS;
} else {
this.setResult("0");
return SUCCESS;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return INPUT;
}
}
public String checkEmail() throws Exception {
try {
listCheckEmail = this.userInfoService.checkemail(userInfo
.getEmail());
if (listCheckEmail.isEmpty()) {
this.setResult("0");
return SUCCESS;
} else {
System.out.println("该邮箱已经被占用");
this.setResult("1");
return SUCCESS;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return INPUT;
}
}
我们用iterator.size()来统计出我们通过sql语句来查询出来的长度,sql语句如下所示:select * from userInfo where userInfo.userName='"+userName+";
若是iterator的结果是一条数据证明该用户已经存在,若是iterator的结果没有结果,证明该用户不存在数据库中,没有被占用,也就是说那个邮箱是可以注册的。
$("#email")
.formValidator( {
onShow : "请输入邮箱",
onFocus : "邮箱6-100个字符",
onCorrect : "恭喜你,你输对了",
defaultValue : "@"
})
.inputValidator( {
min : 6,
max : 100,
onError : "你输入的邮箱长度非法,请确认"
})
.regexValidator(
{
regExp : "^([\\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$",
onError : "你输入的邮箱格式不正确"
}).ajaxValidator( {
dataType : "html",
async : true,
type : "get",
url : "user/checkemail.action",
success : function(data) {
data = parseInt(data, 10);
if (data == 0) {
return true;
} else {
return "该email已存在,请更换您的邮箱";
}
alert(data.length);
},
buttons : $("#button"),
error : function(jqXHR, textStatus, errorThrown) {
alert("服务器没有返回数据,可能服务器忙,请重试" + errorThrown);
},
onError : "该email不可用,请更换用户名",
onWait : "正在进行合法性校验,请稍候..."
});
我们调用action,来当鼠标离开焦点的时候来验证该邮箱是否可以用,当通过action向后台传回的值是0的时候证明是可以用的,为1的时候是不可用的,我们可以看到,里面的checkemail.action,而后台的是传值是result,这就要我们在jsp页面设置一个能够向后台传result的页面了。提示给后台要执行的sql语句所对应的结果。