最近学习网站开发,做到注册时希望提高网站安全性,故给网站做了验证码。
首先给出一个可运行的验证码图片生成程序,以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