当前位置: 代码迷 >> Web前端 >> 运用Google工具生成随机验证码
  详细解决方案

运用Google工具生成随机验证码

热度:239   发布时间:2012-10-15 09:45:25.0
使用Google工具生成随机验证码

很多网站都有验证码认证的功能。生成随机数,需要用户自己填写,之后进行认证。这是为了防止非法使用者利用工具工具网站。

以前有人自己写个工具类将生成的数字输出成byte[]类型,之后再输出到前台页面。

这几天看到了Google Code有个开源项目kaptcha,用来生成随机验证码。十分好用。分享给大家

首先从google下载组件(http://code.google.com/p/kaptcha/downloads/detail?name=kaptcha-2.3.2.zip)

解压缩后将kaptcha-X.jar包加入到自己项目的classpath中。

?

初始化该类代码如下

static DefaultKaptcha defaultKaptcha = new DefaultKaptcha();

static {
    defaultKaptcha.setConfig(new Config(new Properties()));
}

?加载默认配置

使用如下

BufferedImage bufferedImage = defaultKaptcha.createImage(随机数);

ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
    ImageIO.write(bufferedImage, "jpg", out);
} catch (IOException e) {
    e.printStackTrace();
}
File file = new File("c:/1.jpg");
try {
    FileOutputStream fileOut = new FileOutputStream(file);
    fileOut.write(out.toByteArray());
} catch (FileNotFoundException e) {

} catch (IOException e) {

}

?

?运行后生成文件如下

?

byte[]输出到页面核心代码如下

<%
response.reset();
response.setContentType("image/jpeg ");

//不缓存
response.addHeader("pragma", "NO-cache");
response.addHeader("Cache-Control", "no-cache");

bytesum += byteread;
response.getOutputStream().write(buffer, 0, byteread);
		
response.getOutputStream().flush();
out.clear();
out = pageContext.pushBody();

//response.getOutputStream().close();
System.out.println("调用输出图片流");

%>

?

1 楼 hongmin118 2011-06-13  
不用这么麻烦的,直接在web.xml里配个servlet就可以了啊。。。
2 楼 suhuanzheng7784877 2011-06-13  
hongmin118 写道
不用这么麻烦的,直接在web.xml里配个servlet就可以了啊。。。

呵呵呵~~~~~这个是为我那个Maven的Blog笔记的一个子模块服务的,没实际应用意义。正规项目也不这么用。
3 楼 suhuanzheng7784877 2011-06-13  
我先自己检讨一下啊~~~~各位朋友,此Blog的title有点问题。应该是《使用Google Code小项目生成随机验证码》。因为这个文章是为我那个Maven的Blog笔记的一个子模块服务的,没实际应用意义。正规项目也不这么用。
而且输出页面jsp的那个片段有问题~~~~因为不能把公司的项目全部代码粘过来,怕客户那边追则。网上输出byte[]到页面前端有很多代码例子,在此就不写出了~~~~
请大家见谅。。。。
4 楼 qinglintan 2011-06-14  
博主很RY
5 楼 liu400liu 2011-06-22  
谢谢分享!
  相关解决方案