首先去官网下载了kaptcha的压缩包
下载地址在:下载地址
下载了后解压,文件目录里有
doc、javadoc、src、kaptcha.war、kaptcha-2.3.2.jar、kaptcha-2.3.2-jdk14.jar、LICENSE.txt、README.txt
首先打开readme.txt
内容如下:
kaptcha - A kaptcha generation engine.
Please see the website for more information about this project.
http://code.google.com/p/kaptcha/
thanks!
好像并没有什么卵用,于是接着找。
看到kaptcha.war,眼前一亮,这不就是web工程的一个压缩格式吗?于是就把这个文件搬到tomcat的webapps目录下。
然后访问 http://localhost:8080/kaptcha 果然进来了。
页面效果如下:
这个时候在tomcat的webapps目录下也多一个解压好的kaptcha项目,项目的结构如下:
-kaptcha
-META-INF
-MANIFEST.MF
-WEB-INF
-lib
-kaptcha-2.3.2.jar
-web.xml
-KaptchaExample.jsp
这下怎么使用kaptcha应该是问题不大了,模仿他就行了。
重要的步骤应该分为3步:
1.将kaptcha-2.3.2.jar放到WEB-INF/lib/目录下
2.配置一下web.xml文件
3.模仿一下*.jsp文件,这样就可以使用验证码了,顺便写个servlet处理一下。
先来分析一下他的例子,再看看剩下的步骤怎么做:
打开KaptchaExample.jsp与web.xml文件,内容如下:
KaptchaExample.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
Kaptcha Example
Enter in the Kaptcha to see if it matches what is stored in the session attributes.

<%
String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
out.println("Parameter: " + parm + " ? Session Key: " + c + " : ");
if (c != null && parm != null) {
if (c.equals(parm)) {
out.println("true");
} else {
out.println("false");
}
}
%>
Kaptcha
com.google.code.kaptcha.servlet.KaptchaServlet
kaptcha.border
no
kaptcha.textproducer.font.color
black
kaptcha.textproducer.char.space
5
Kaptcha
/Kaptcha.jpg
KaptchaExample.jsp
其他都是废话,就看这一行:
这行指定了验证码的资源是Kaptcha.jpg这个图片,Kaptcha.jpg这个图片在哪呢,再来看web.xml文件
有一行是这样的:
那就说明Kaptcha.jpg不是一张图片,而是一个servlet的映射,而这个Servet的任务应该就是生成一张图片把。
顺藤摸瓜,找对应的servlet-name -再找servlet-name对应的servlet-class 原来是com.google.code.kaptcha.servlet.KaptchaServlet这个Servlet做的
至于他做了一些什么,怎么做了,我才懒得去管,我只要知道他能帮我生成一张图片就对了。
那么图片如何验证的呢?
jsp页面访问的时候的最后一行是:
Parameter: null ? Session Key: dc56m
这里显示的key好像和上面的验证码并不一样。多试了几次发现这里显示的是上次验证码的值。
再来看下jsp的源代码:
String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
这里的c就是获得的上一次验证码的值,而这个parm就是表单里面提交上去数据的信息,通过比较就能判断验证码是否正确了。
这下思路都清晰了,怎么使用kaptcha应该是很容易了。
在web.xml中复制以下内容到自己项目的web.xml文件中
Kaptcha
com.google.code.kaptcha.servlet.KaptchaServlet
kaptcha.border
no
kaptcha.textproducer.font.color
black
kaptcha.textproducer.char.space
5
Kaptcha
/Kaptcha.jpg
然后是jsp中,将需要用到验证码的地方设置
在servlet中,验证一下
String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
c与parm是否相同就行了。