ssh+ajax 注册验证 以及struts2+json注意事项
在我们日常开发中,经常会遇到注册时进行用户名异步验证这一步,下面是我开发时的一个小例子,希望能对大家有帮助。需要注意的是,我们后台是利用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="/" extends="json-default"> <action name="Json_*" class="user_action" method="{1}"> <result name="userAllowRegister" type="json"></result> <result name="userNoRegister" type="json"></result> </action> </package> 注意返回类型为json JSON(Java Script Object Notation),是一种语言无关的数据交换格式。 如果我们在后台不希望返回的数据,可以禁止其被序列化,可以使用 @JSON(serialize=false)注解对其屏蔽,说明
@JSON(name="newName")json中的名称
这个时候配置includeProperties或者excludeProperties拦截器即可。
<!-- 只包含user.id属性 --> <resulttype="json"name="user"> <paramname="includeProperties"> user.id </param> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |