日期:2014-05-16 浏览次数:20375 次
在我们日常开发中,经常会遇到注册时进行用户名异步验证这一步,下面是我开发时的一个小例子,希望能对大家有帮助。需要注意的是,我们后台是利用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