Ajax Struts2实现验证码验证功能实例代码
众所周知,验证码在我们的生活中都是非常常见的,很多公司都在各种折腾各种各样的验证码,这里简要的用一个小案例来实现验证码的功能(ps:其实我挺讨厌验证码这个东西的)。
今天分享的是通过创建交互式、快速动态网页应用的网页开发技术来动态的验证验证码输入是否正确。我们这里采用的是ajax struts2来做的这个验证。我们新建一个网工程。然后需要导入支杆的相应包。之后我们需要写一个类来生成验证码。
这里命名为01_image.jsp,这类的主要功能就是生成验证码,里面是各种画线条,随机数字等,我这里设置的是5个数字的验证,如果你想要改成其他的也可以,大致思路就是在生成数字的那个循环那里加上字母就可以了。
“% @”页面语言=“Java”页面编码=“UTF-8”% @页面内容类型=“图像/JPEG”导入=“Java”。啊。*,java.awt.image.*,java.util.*,javax。imageio。* %!public Color getColor(){ Random Random=new Random();int r=随机。nextint(256);//0-255 int g=随机。nextint(256);int b=随机。nextint(256);返回新颜色(r、g、b);} public String getNum(){ String str=' ';Random Random=new Random();for(int I=0;i5;I){ str=random。nextint(10);//0-9 }返回字符串;}%%response.setHeader('pragma ',' no-cache ');回应。setheader(' cache-control ',' no-cache ');回应。setdateheader(' expires ',0);BufferedImage=新的BufferedImage(80,30,BufferedImage .TYPE _ INT _ RGB);图形g=图像。getgraphics();g.setColor(新颜色(200,200,200));g.fillRect(0,0,80,30);for(int I=0;I 50I){ Random Random=new Random();int x=随机。nextint(80);int y=随机。nextint(30);int XL=随机。nextint(x 10);int yl=随机。nextint(y ^ 10号);g . SetColor(GetColor());g.drawLine(x,y,x xl,y yl);}g.setFont(新字体('衬线,字体BOLD,16));设置颜色。黑色);string CheckNum=GetNum();//' 2525 ' StringBuffer sb=new StringBuffer();for(int I=0;ichecknum。length();某人。追加(CheckNum。charat(I)' ');//' 2 5 2 5 ' } g .拉长(某人。tostring(),15,20);session.setAttribute('CHECKNUM ',CHECKnum);//2525//通过字节输出流输出ImageIO.write(image,' jpeg ',响应。getoutputstream());出去。clear();out=页面上下文。PubBody();%接下来把输入验证码的超文本标记语言页面写好,我这里是些在了一个jsp文件中的。命名为checkcode.jsp
泰国(泰国)验证码:/thtdinput type=' text ' name=' check code ' id=' check codeid ' maxlength=' 5 '/tdtdtdtdimg src=' http :01 _ image。JSP ' id=' IMGiD '/tdtd id=' ResID '/TD/tr/table/form然后给这个文件添加爪哇岛描述语言代码,这里使用的当然就是一个创建交互式、快速动态网页应用的网页开发技术啦,对于创建交互式、快速动态网页应用的网页开发技术的编码步骤之前已经写的很详细了,所以我们这里就直接使用了。对于ajax.js写好后放到射流研究…目录下面,然后再找个checkcode.jsp中引入中国射流研究…文件ajax.js的内容:
//创建创建交互式、快速动态网页应用的网页开发技术异步对象,即XMLHttpRequestfunction createAJax(){ var AJax=null;请尝试{ Ajax=新的activexObject('微软。xmlhttp’);} catch(E1){ try { Ajax=new XMlhttprequest();}catch(e2){alert('你的浏览器不支持ajax,请更换浏览器');} }返回ajax}然后就是chenkcode中的射流研究…内容了
//去掉两边的空格功能(trim(str){str=str.replace(/^\s*/,'');//从左侧开始,把空格去掉str=str.replace(/\s*$/,' ');//从右侧开始,把K歌都去掉返回字符串;}文档。getelementbyid(' checkcodeID ').onkeyup=function(){ var校验码=this。价值;checkcode=trim(检查代码);if(检查代码。length==5){ var Ajax=createAJax();定义变量方法=' POSTvar URL=' $ { page context。请求。上下文路径}/CheckRequest?时间='新日期()。getTime();ajax.open(方法、网址);//设置创建交互式、快速动态网页应用的网页开发技术请求头为帖子,它会将请求的汉字自动进行utf-8的编码Ajax。setrequestheader('内容类型',' application/x-www-form-URL编码');var内容='校验码='校验码;ajax.send(内容);Ajax。onreadystatechange=function(){ if(Ajax。readystate==4){ if(Ajax。status==200){ var tip=Ajax。responsetextvar img=文档。创建元素(' img ');img.src=tipimg。风格。宽度=' 14pximg。风格。高度=' 14pxvar TD=文档。getelementbyid(' ResID ');td.innerHTML=TD。appendchild(img);} } } else { var TD=document。getelementbyid(' ResID ');td.innerHTML=}}然后开始写服务器端的代码,进行校验的话就需要这样的一个类了:
包裹cn。TF。校验码;导入Java。io。ioexception导入Java。io。版画作家;导入javax。servlet。http。HttpServletResponse导入组织。阿帕奇。支柱2。servletactioncontext导入com。开放式交响乐。xwork 2。行动背景;导入com。开放式交响乐。xwork 2。行动支持;//验证码检查公共类CheckcodeAction扩展了操作支持{私有字符串检查代码;public void setCheckcode(字符串校验码){ this。校验码=校验码;}/*** 验证* @抛出IOException */公共字符串检查()抛出IOException {//图片路径字符串提示=' images/a . jpg ';//从服务器获取会议中的验证码String checkcodeServer=(字符串)ActionContext.getContext().getSession().get(' CHECKNUM ');if(检查代码。equals(check codeserver)){ tip=' images/b . jpg ';}//以超正析象管(图像或图标)流的方式将小费变量输出到创建交互式、快速动态网页应用的网页开发技术异步对象中HttpServletResponse响应=servletactioncontext。getresponse();回应。setcontenttype(' text/html;字符集=UTF-8 ';PrintWriter pw=响应。getwriter();pw。写(提示);pw。flush();pw。close();返回null}}最后在struts.xml文件中写入相应的方法。
struts包名=' myPackage ' extends=' struts-default ' namespace='/' action name=' check request ' class=' cn。TF。检查代码。“检查代码操作”方法='check'/action/package/struts运行结果如下:验证成功则返回绿色的小勾,错误则红色的叉。
以上所述是小编给大家介绍的Ajax Struts2实现验证码验证功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
版权声明:Ajax Struts2实现验证码验证功能实例代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。