这篇文章主要介绍了ajax+struts2实现验证码验证功能实例代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
众所周知,验证码在我们的生活中都是非常常见的,很多公司都在各种折腾各种各样的验证码,这里简要的用一个小案例来实现验证码的功能(ps:其实我挺讨厌验证码这个东西的)。
今天分享的是通过ajax来动态的验证验证码输入是否正确。我们这里采用的是ajax+struts2来做的这个验证。 我们新建一个web工程。然后需要导入struts的相应包。之后我们需要写一个类来生成验证码。
这里命名为01_image.jsp,这类的主要功能就是生成验证码,里面是各种画线条,随机数字等,我这里设置的是5个数字的验证,如果你想要改成其他的也可以,大致思路就是在生成数字的那个循环那里加上字母就可以了。
登录后复制
接下来把输入验证码的html页面写好,我这里是些在了一个jsp文件中的。命名为checkcode.jsp
验证码:![]()
登录后复制
然后给这个文件添加javascript代码,这里使用的当然就是一个ajax啦,对于ajax的编码步骤之前已经写的很详细了,所以我们这里就直接使用了。 对于ajax.js写好后放到js目录下面,然后再找个checkcode.jsp中引入中国js文件 ajax.js的内容:
//创建AJAX异步对象,即XMLHttpRequestfunction createAJAX(){var ajax = null;try{ajax = new ActiveXObject("microsoft.xmlhttp");}catch(e1){try{ajax = new XMLHttpRequest();}catch(e2){alert("你的浏览器不支持ajax,请更换浏览器");}}return ajax;}
登录后复制
然后就是chenkcode中的js内容了
//去掉两边的空格function trim(str){str=str.replace(/^s*/,"");//从左侧开始,把空格去掉str=str.replace(/s*$/,""); //从右侧开始,把K歌都去掉return str;}document.getElementById("checkcodeID").onkeyup=function(){var checkcode=this.value;checkcode=trim(checkcode);if(checkcode.length==5){var ajax=createAJAX();var method="POST";var url = "${pageContext.request.contextPath}/checkRequest?time="+new Date().getTime();ajax.open(method,url);//设置ajax请求头为post,它会将请求的汉字自动进行utf-8的编码ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");var content="checkcode="+checkcode;ajax.send(content);ajax.onreadystatechange=function(){if(ajax.readyState==4){if(ajax.status==200){var tip=ajax.responseText;var img=document.createElement("img");img.src=tip;img.style.width="14px";img.style.height="14px";var td=document.getElementById("resID");td.innerHTML="";td.appendChild(img);}} } }else{var td=document.getElementById("resID");td.innerHTML="";}}
登录后复制
然后开始写服务器端的代码,进行校验的话就需要这样的一个类了:
package cn.tf.checkcode;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;//验证码检查public class CheckcodeAction extends ActionSupport{private String checkcode;public void setCheckcode(String checkcode) {this.checkcode = checkcode;}/*** 验证* @throws IOException */public String check() throws IOException {//图片路径String tip="images/a.jpg";//从服务器获取session中的验证码String checkcodeServer=(String) ActionContext.getContext().getSession().get("CHECKNUM");if(checkcode.equals(checkcodeServer)){tip="images/b.jpg";}//以IO流的方式将tip变量输出到ajax异步对象中HttpServletResponse response=ServletActionContext.getResponse();response.setContentType("text/html;charset=UTF-8");PrintWriter pw=response.getWriter();pw.write(tip);pw.flush();pw.close();return null;}}
登录后复制
最后在struts.xml文件中写入相应的方法。
登录后复制
运行结果如下:验证成功则返回绿色的小勾,错误则红色的叉。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
Ajax点击不断加载数据列表(图文教程)
浅谈ajax请求技术
非常实用的ajax用户注册模块
以上就是Ajax+Struts2实现验证码验证功能(图文教程)的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2758583.html