google验证码 kaptcha 的使用

首先去官网下载了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 果然进来了。

页面效果如下:

google验证码 kaptcha 的使用_第1张图片

这个时候在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.
		
		

sec code:




<% 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"); } } %>


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
	

	
		KaptchaExample.jsp
	


先看jsp文件:

其他都是废话,就看这一行:

这行指定了验证码的资源是Kaptcha.jpg这个图片,Kaptcha.jpg这个图片在哪呢,再来看web.xml文件

有一行是这样的:/Kaptcha.jpg

那就说明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
	

这样访问Kaptcha.jpg的时候就能够访问到jar包中的servlet了;

然后是jsp中,将需要用到验证码的地方设置
在servlet中,验证一下

String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
c与parm是否相同就行了。



你可能感兴趣的:(javaee,学习笔记)