在我们日常开发中,经常会遇到注册时进行用户名异步验证这一步,下面是我开发时的一个小例子,希望能对大家有帮助。需要注意的是,我们后台是利用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>
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"; }
<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插件是Structs 2 的Ajax插件,通过利用JSON插件,开发者可以很方便,灵活的利用Ajax进行开发。
Json是一种轻量级的数据交换格式,JSon插件提供了一种名为json的Action ResultType 。
一旦为Action指定了该结果处理类型,JSON插件就会自动将Action里的数据序列化成JSON格式的数据,
并返回给客户端物理视图的JavaScript。简单的说,JSON插件允许我们在JavaScript中异步的调用Action,
而且Action不需要指定视图来显示Action的信息显示。
而是由JSON插件来负责具体将Action里面具体的信息返回给调用页面。
Json的数据格式可简单如下形式: person = { name: 'Jim',age: 18,gender: 'man'}。
如果action的属性很多,我们想要从Action返回到调用页面的数据。
如果我们在后台不希望返回的数据,可以禁止其被序列化,可以使用 @JSON(serialize=false)注解对其屏蔽,说明
此属性不被加入json。
@JSON(name="newName")json中的名称
@JSON(serialize=false)属性不被加入
json@JSON(format="yyyy-MM-dd")格式化日期
这个时候配置includeProperties或者excludeProperties拦截器即可。
<!-- 只包含user.id属性 --> <resulttype="json"name="user"> <paramname="includeProperties"> user\.id </param>
<!-- 不包含user属性 --> <resulttype="json"name="list"> <paramname="excludeProperties"> user </param> </result> <!-- 根对象只包含user --> <resulttype="json"> <paramname="root"> user </param> </result>
原文地址:https://www.jb51.cc/ajax/164973.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。