日期:2014-05-16 浏览次数:20468 次
在我们日常开发中,经常会遇到注册时进行用户名异步验证这一步,下面是我开发时的一个小例子,希望能对大家有帮助。需要注意的是,我们后台是利用json返回json字符串,struts2整合json我们需要加入以下jar包:
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.3.16</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
页面效果:左图是用户名已被注册,右图是允许注册。


下面是我的前台代码:
<script type="text/javascript">
function checkLogin(){
var xmlHttp;
var name = document.getElementById("email").value;
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
else {
xmlHttp = new ActiveXObject("MicroSoft.XMLHTTP");//老版本的ie
}
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
//var ss = xmlHttp.responseText;
var dataObj=eval("("+xmlHttp.responseText+")");
if(dataObj.exist=="false"){
document.getElementById("tip").innerHTML="<img src='images/ok.png'/>";
}
else
{
document.getElementById("tip").innerHTML="<img src='images/no.png'/>";
}
}
};
xmlHttp.open("post","Json_checkRegister.action?checkname="+name,true);
xmlHttp.send();
}
</script>
<p><input type="email" id="email" name="user.username" onblur="checkLogin();" class="loginInput" autofocus="autofocus" required="required" autocomplete="off" placeholder="请输入电子邮箱" value="" /><font id="tip"></font></p>
下面是后台action代码:
public String checkRegister() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
JSONObject json=new JSONObject();
PrintWriter out = response.getWriter();
if(this.userservice.checkRegister(checkname)==false){
json.put("exist", "false");
out.println(json);
out.flush();
out.close();
return "userAllowRegister";
}
json.put("exist", "true");
out.println(json);
out.flush();
out.close();
return "userNoRegister";
}
配置文件strut.xml代码:
<package name="json" namespace="/&q