最近学习网站开发,做到注册时希望提高网站安全性,故给网站做了验证码。
首先给出一个可运行的验证码图片生成程序,以applet形式呈现。后面附上代码下载链接,在此不研究程序具体实现。
验证码生成大概步骤是:
1.获得随机字符
2.将字符绘制到图片上
3.添加干扰线
4.添加燥点
5.将图片以BufferedImage形式返回。
程序结果如图:
现在说明它如何在struts2中实现并如何显示在页面上。
产生在action中新建一个方法getCheckCode();
public String getCheckCode(){ //获取验证码字符。 code=CheckCodeUtils.getCheckCodeString(); //将验证码写在图片上,返回BufferedImage对象 BufferedImage image=CheckCodeUtils.getCheckCodeImage(code); //将图片输出到页面 HttpServletResponse response=ServletActionContext.getResponse(); ServletActionContext.getResponse().setContentType("image/jpeg"); try { ImageIO.write(image, "jpeg",response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } return null; }
其中code是验证码的具体内容,而它相应的图片则被封装成图片流输出到页面上,CheckCodeUtils是上面讲的java形式的验证码生成程序,我已经做了封装,后面会给出代码。
jsp中:
<html> <head> <script type="text/javascript"> $(function() { $("#aRecode").click(function() { //JS调用action只能调用一次,但是如果后面加上随机数就可以多次调用了 $("#code").attr("src", "checkcode.action?param="+new Date()); }); }); </script> </head> <body> <form method="post"> <img id="code" src=\‘#\‘" width="120px" height="50px"/> <a id="aRecode" href=\‘#\‘" /a> </form>
注意 以上jsp代码只是大概代码,并不保证能够运行,所以不能直接复制。各位只要看<form>里面的内容和javascript里面的内容就可以了(这两个是一定能执行的)。
struts2.xm
<action name="checkcode" class="initAction" method="getCheckCode"> </action>
配置文件比较简单,只要告诉系统具体action对应哪个方法就行了。
最终程序结果如图:
本文出自 “先生有火吗” 博客,请务必保留此出处http://88qlp88.blog.51cto.com/4346152/1358107
原文:http://88qlp88.blog.51cto.com/4346152/1358107