google验证码 kaptcha 的使用
2015-06-06 23:04
706 查看
首先去官网下载了kaptcha的压缩包
下载地址在:下载地址
下载了后解压,文件目录里有
doc、javadoc、src、kaptcha.war、kaptcha-2.3.2.jar、kaptcha-2.3.2-jdk14.jar、LICENSE.txt、README.txt
首先打开readme.txt
内容如下:
好像并没有什么卵用,于是接着找。
看到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
web.xml
先看jsp文件:
其他都是废话,就看这一行:<td><img src="Kaptcha.jpg"></td>
这行指定了验证码的资源是Kaptcha.jpg这个图片,Kaptcha.jpg这个图片在哪呢,再来看web.xml文件
有一行是这样的:<url-pattern>/Kaptcha.jpg</url-pattern>
那就说明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的源代码:
这下思路都清晰了,怎么使用kaptcha应该是很容易了。
在web.xml中复制以下内容到自己项目的web.xml文件中
这样访问Kaptcha.jpg的时候就能够访问到jar包中的servlet了;
然后是jsp中,将需要用到验证码的地方设置<img src="Kaptcha.jpg"/>
在servlet中,验证一下
下载地址在:下载地址
下载了后解压,文件目录里有
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ page language="java" contentType="text/html; charset=UTF-8" %> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Kaptcha Example</title> </head> <body> Enter in the <a href="http://code.google.com/p/kaptcha/">Kaptcha</a> to see if it matches what is stored in the session attributes. <table> <tr> <td><img src="Kaptcha.jpg"></td> <td valign="top"> <form method="POST"> <br>sec code:<input type="text" name="kaptchafield"><br /> <input type="submit" name="submit"> </form> </td> </tr> </table> <br /><br /><br /><br /> <% 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("<b>true</b>"); } else { out.println("<b>false</b>"); } } %> </body> </html>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> <!-- For a complete list of Init Parameters, please see: http://code.google.com/p/kaptcha/wiki/ConfigParameters --> <init-param> <param-name>kaptcha.border</param-name> <param-value>no</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.color</param-name> <param-value>black</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.space</param-name> <param-value>5</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/Kaptcha.jpg</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>KaptchaExample.jsp</welcome-file> </welcome-file-list> </web-app>
先看jsp文件:
其他都是废话,就看这一行:<td><img src="Kaptcha.jpg"></td>
这行指定了验证码的资源是Kaptcha.jpg这个图片,Kaptcha.jpg这个图片在哪呢,再来看web.xml文件
有一行是这样的:<url-pattern>/Kaptcha.jpg</url-pattern>
那就说明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文件中
<span style="white-space:pre"> </span><servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> <!-- For a complete list of Init Parameters, please see: http://code.google.com/p/kaptcha/wiki/ConfigParameters --> <init-param> <param-name>kaptcha.border</param-name> <param-value>no</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.color</param-name> <param-value>black</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.space</param-name> <param-value>5</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/Kaptcha.jpg</url-pattern> </servlet-mapping>
这样访问Kaptcha.jpg的时候就能够访问到jar包中的servlet了;
然后是jsp中,将需要用到验证码的地方设置<img src="Kaptcha.jpg"/>
在servlet中,验证一下
String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); String parm = (String) request.getParameter("kaptchafield");c与parm是否相同就行了。
相关文章推荐
- 学习django-1
- x2go
- ubuntu 如何安装sougou(搜狗)输入法 亲测好用
- golang grpc thrift with aerospike
- 漫步云端之初读Google三大论文(一)
- 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II
- Django学习日记02_项目环境
- 2015 GOOGLE I/O大会看点总结:新的开发工具及云端测试工具
- Django学习日记01_环境搭建
- hdu 1847 Good Luck in CET-4 Everybody!
- django环境搭建
- unbuntu 14安装 golang
- Go语言文档
- hdu 1864 最大报销额 (01背包)
- Google photos -- reverse thinking
- 各个屏幕的logo尺寸要求
- UVA 11292 DRAGON OF LOOWATER 【贪心】
- Django1.8文档翻译-Form-Overview
- mac修改host文件,让你的mac轻松上google
- golang runtime-gdb.py的问题