Struts2+Ajax实现检测用户名是否唯一
来源:互联网 发布:淘宝换货需要先签收吗 编辑:程序博客网 时间:2024/06/05 06:51
转载自:http://www.cnblogs.com/xuehanlee/p/4541276.html
代码块
Action:
package com.bbs.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.bbs.model.*;import com.opensymphony.xwork2.*;@SuppressWarnings("serial")public class CheckUser extends ActionSupport { //private String username; public String execute() throws Exception { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); String username = req.getParameter("username"); res.setContentType("text/html;charset=UTF-8"); String responseStr = ""; UserDAO udao = new UserMySQLDAO(); if (udao.ValiUserByName(username)) { res.getWriter().print("exists"); } else { responseStr = "你可以使用该用户名"; res.getWriter().print(responseStr); } return null; } }
这里第一行的package是我自己定义的Action包。网上有好多例子是JavaScript与JSP通信或者Servlet通信,但是鲜有与Action传递参数的例子。但我就是想让JSP做纯粹是展现的东西,并且如果再加上Servlet话,会破坏原有的MVC清晰架构,所以在这一点上,我相信自己的坚持是对的。
至于怎么检测用户名是否在数据库中存在,这就是一个很easy的问题了,此处就不讲了,重点讲一下我是怎么架构的,其他无关紧要的细节,或者一搜就能搜到的解释,本着简明扼要的原则,一概忽略之。
JavaScript:
var req;var span;function Check(field) { span = document.getElementById("result"); if(field.value == '') { span.style.color = "red"; span.innerHTML="用户名不能为空"; return false; } if(window.XMLHttpRequest) { //其他非IE浏览器支持 req = new XMLHttpRequest(); }else if(window.ActiveXObject) { //微软的IE支持 req = new ActiveXObject("Microsoft.XMLHTTP"); } req.onreadystatechange = press; req.open("POST", "CheckUser?username="+field.value, true); req.setRequestHeader("Content-type","application/x-www-form-urlencoded"); req.send("");}function press() { if(req.readyState < 4) { span.style.color = "blue"; span.innerHTML="正在检测"; } if(req.readyState == 4) { if(req.status == 200) { if(req.responseText == "exists") { span.style.color = "red"; span.innerHTML="用户名已经存在"; }else { span.style.color = "green"; span.innerHTML="您可以使用该用户名"; } } }}
这一段代码是用来实现Ajax用户名检测的部分。第5-9行是检测用户名为空的代码,很好理解。重点是后面的部分。首先,建立一个XMLHttpRequest对象,这是实现Ajax的核心部分,只有用它才能用来
向后台发送请求,发送请求分两步:打开连接,发送请求。
打开连接用open方法。
open方法的原型 open(“method”,”URL”,[,asyncFlag[,”userName”[,”password”]]]);
method:POST/GET。这两种方法的区别就不详细介绍了,到处都有介绍。需要注意一点是:必须要有双引号,我就因为没加引号,找了半天才找到原因,汗。
asyncFlag:true代表异步,一般情况下我们应该选择这个;false代表同步。
后面的username和password则专用于一些远程服务。
发送请求用send方法。
send(content);//content 是请求参数。一般情况下可以省略。
setRequestHeader():在发送之前要设置请求头。
onreadystatechange参数用来设置相应的回调函数。
后面的press就是那个回调函数。
关于status的各种解释此处从略。
这里的span就是用来在用户名输入框后面做语句展现的。
HTML&JSP:
<input id="regusername" type="text" name="username" size="50" maxlength="12" value="" autocomplete="off" onblur="Check(this)"/> <span id = "result"></span>
struts.xml
<package name="server" namespace="/" extends="struts-default"> <action name="CheckUser" class="com.bbs.action.CheckUser"> <result name="success">Welcome.jsp</result> <result name="input">Register.jsp</result> </action></package>
其实此处的result部分,无所谓了,因为注意一下前面的Action最后返回的是null,为什么是null呢?因为前面的JavaScript部分,有一句是利用responseText与字符串比较来产生不同的效果。
如果是success或者input的话,会直接将跳转后的页面(Welcome.jsp/Register.jsp)返回过来。此处又折腾了半天,汗。
另外虽然好多资料都讲到responseText是一个字符串,但是实际上,不能完全按照字符串的处理方法去处理他,刚开始我用equals函数,没有反应,后来改成==才能达到效果。
- Struts2+Ajax实现检测用户名是否唯一
- Struts2&ajax实现用户名唯一验证案例
- Ajax技术之与服务器通信-一个完整的实例(实现检测用户名是否唯一功能)
- ajax配合struts2(ssh2)实现无刷新验证用户名是否唯一
- AJAX应用实例_检测用户名是否唯一
- JQuery+Ajax实现用户名的检测(用户名是否已存在)
- ajax+struts2“实时”检测用户名是否被占用
- 用Struts2实现用户名唯一
- Ajax检测用户名是否存在
- ajax检测用户名是否存在
- AJAX 检测用户名是否存在
- 应用ajax实现检测注册用户名是否已经存在
- AJAX简单示例——实现检测用户名是否可用
- ajax实现在注册时检测用户名是否注册过。
- Ajax实例以及单步调试反思:检测用户名是否唯一
- Ajax技术--检查用户名是否唯一
- ajax实现验证用户名是否已经存在(struts2)
- ajax+struts2实现验证用户名是否已经被注册
- Java web图片上传本地预览,无需后台写接口
- 会自动伸缩的文本输入框HPGrowingTextView
- 洛谷9月月赛--T2[T2]预生成密码
- 学习浅墨opencv入门教程三之综合实例犯错总结
- Math函数
- Struts2+Ajax实现检测用户名是否唯一
- 前端面试拾遗——this、类型检测、es6
- Android开发之线程池使用总结
- android点赞效果--LikeView
- 并发的HashMap为什么会引起死循环
- How to make 9-patch image downloaded from the Network
- Vue-01
- Tomcat在虚拟机下的Linux(ubuntu)上的安装与配置
- 使用jcrop进行头像剪切