日期:2014-05-16  浏览次数:20349 次

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="/&q