- 浏览: 230472 次
- 性别:
- 来自: beijing
文章分类
kaptcha 简单例子 与 产生中文字符
kaptcha 是一个产生 随机 字符的 java框架,用于输入 验证 用了工厂模式与 , 装饰者,
现在提供一个 产生中文的 验证码 只要 产生字符的 类
ChineseText extends Configurable implements TextProducer
实现 getText 方法, Configurable 类中的 getConfig 获得 配置信息 Config 类的信息
比如 产生字符的长度 getConfig 中的 getTextProducerCharLength 方法,
下面是 kaptcha 框架 的 getTextProducerCharLength 方法
public int getTextProducerCharLength() { String paramName = "kaptcha.textproducer.char.length"; String paramValue = this.properties.getProperty(paramName); return this.helper.getPositiveInt(paramName, paramValue, 5); }
2 写一个 现在提供一个 产生中文的 验证码 只要 产生字符的 类 ChineseText
package com.nbw.common.util; import java.util.Random; import com.google.code.kaptcha.text.TextProducer; import com.google.code.kaptcha.util.Configurable; /** * 随机产生字符,包括汉字 length 表示 长度 * @author qcy * */ public class ChineseText extends Configurable implements TextProducer{ public String getText() { int length = getConfig().getTextProducerCharLength(); //int length = 4; String finalWord="",firstWord=""; int tempInt=0; String[] array={ "0","1","2","3", "4","5","6","7", "8","9","a","b", "c","d","e","f"}; Random rand = new Random(); for(int i=0;i<length;i++){ switch(rand.nextInt(3)){ case 1: tempInt=rand.nextInt(26)+65; firstWord=String.valueOf((char)tempInt); break; case 2: int r1,r2,r3,r4; String strH,strL;// high&low r1=rand.nextInt(3)+11; // 前闭后开[11,14) if(r1==13){ r2=rand.nextInt(7); }else{ r2=rand.nextInt(16); } r3=rand.nextInt(6)+10; if(r3==10){ r4=rand.nextInt(15)+1; }else if(r3==15){ r4=rand.nextInt(15); }else{ r4=rand.nextInt(16); } strH=array[r1]+array[r2]; strL=array[r3]+array[r4]; byte[] bytes=new byte[2]; bytes[0]=(byte)(Integer.parseInt(strH,16)); bytes[1]=(byte)(Integer.parseInt(strL,16)); firstWord=new String(bytes); break; default: tempInt=rand.nextInt(10)+48; firstWord=String.valueOf((char)tempInt); break; } finalWord+=firstWord; } return finalWord; } public static void main(String[] args) { // TODO Auto-generated method stub ChineseText ct = new ChineseText(); System.out.print(ct.getText()); } }
3 写一个 web.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class> com.google.code.kaptcha.servlet.KaptchaServlet </servlet-class> <init-param> <param-name>kaptcha.border</param-name> <param-value>yes</param-value> </init-param> <init-param> <param-name>kaptcha.border.color</param-name> <param-value>105,179,90</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.impl</param-name> <param-value>com.nbw.common.util.ChineseText</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.image.width</param-name> <param-value>500</param-value> </init-param> <init-param> <param-name>kaptcha.image.height</param-name> <param-value>300</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.size</param-name> <param-value>90</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.length</param-name> <param-value>4</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.names</param-name> <param-value>宋体,楷体,微软雅黑</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>
4 前台展示的 页面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> <script type="text/javascript"> </script> </head> <body> <h2>Kaptcha Example</h2> <% 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>"); } } %> <table> <tr> <td> <img src="Kaptcha.jpg" style="width:150px;height:30px" alt="看不清楚,请点击图片" title="看不清楚,请点击图片"> </td> </tr> <tr> <td valign="top"> <form method="POST"> <br> sec code: <input type="text" name="kaptchafield"> <br /> <input type="submit" name="submit"> </form> </td> </tr> </table> </body> </html>
5 good luck !
发表评论
-
二进制 授权管理 java
2013-09-09 12:52 912package org.qincy.binary; ... -
com.richfit.bi.quartz 定时执行示例
2013-04-12 15:39 01 内含jetty 配置,下载jetty 依赖包,算了,还是提 ... -
利用工具将shp文件导入到oracle spatial中
2012-05-21 14:20 43931 下载shp2sdo 工具,将工具放在 oracle按照目录 ... -
Arcgis object for java 访问栅格数据,使用GP工具,进行栅格矢量化---栅格矢量化面。
2012-06-20 09:17 4158直接贴代码了,不多解释了。 1、栅格数据的 ... -
svn 删除注册表
2012-02-11 12:02 1569svn 删除注册表 -
arcgis server 服务
2012-01-06 17:58 1186package com.hdmap.fymas; imp ... -
Flex BlazeDS java 项目
2011-12-12 17:21 1102根据网上的例子 ,写的 flex BlazeDS 框架与 ... -
工具类
2011-02-18 14:05 979英文数字转换为 中文数字 public class Mon ... -
junit 4 spring 自动化测试
2010-12-13 16:08 16401 添加jar ,依赖jar 包围 spring-test, ... -
在tomcat 发布,去掉项目名称
2010-11-17 09:53 19691 找到 server.xml 配置= ... -
掉字段内容包含的空格
2010-09-27 10:17 981使用replace函数去掉字段内容包含的空格,例子如下: up ... -
无聊的jsti 的fn 函数(资料备份)
2010-09-25 17:16 985无聊的jsti 的fn 函数(资料备份) ... -
无聊写Code
2010-09-25 09:38 1008package edu.qdkj.main; impor ... -
Spring Quartz 学习
2010-09-20 09:27 1175Quartz 是一个 定时执行的框架,可以设定规定时执行,或者 ... -
myEclipse 下的项目不能编译
2010-09-09 14:21 952查看 是否有的错误的jar 1.项目----prope ... -
关于VLSM 例子
2010-08-31 16:57 1500未经测试,不知道理解是否正确。 VLSM(可变长子网掩码) ... -
jwebmail的配置
2010-08-16 16:59 2498jwebmail的配置说明 ... -
Solaris10下Nagios安装
2010-08-16 08:48 973发 -
java JDK 下载页面
2010-08-13 16:32 1021全部JDK 下载,从 1.1 到 jdk 6 下载 http ... -
无聊写的io跳过第一行
2010-08-05 09:27 1116public void csvOpenWithReader(I ...
相关推荐
在本案例中,我们将探讨如何使用`Kaptcha`插件来生成动态验证码。`Kaptcha`是一个开源Java库,专为生成验证码图像而设计,具有高度可配置性,可以轻松集成到Web应用中。 首先,我们需要了解`Kaptcha`插件的基本用法...
`kaptcha生成验证码例子 - fonter - ITeye技术网站_files` 文件夹可能包含了网页展示验证码时所需的图片和其他资源。 要使用`kaptcha`,首先需要在项目中引入依赖,如果是Maven项目,可以在pom.xml文件中添加`...
在这个例子中,`/captcha/generate`端点用于生成新的验证码,并将其存储在用户会话中。同时,返回的是Base64编码的验证码图像,以便在前端展示。而`/captcha/validate`端点用于验证用户输入的验证码是否与会话中的...
最方便kaptcha验证码jar包,给页面添加验证码图片。
在给定的内容中,可以看到一个Servlet的配置例子,这是Java Web开发中的重要内容之一。Servlet是一种服务器端的技术,用于扩展应用程序的功能。Servlet可以收集来自HTML表单的数据,处理数据(如查询数据库),或者...
以下是一个简单的生成验证码的例子: ```java KaptchaProducer kaptcha = new DefaultKaptcha(); String text = kaptcha.createText(); BufferedImage image = kaptcha.createImage(text); // 将image保存或...
在这个例子中,验证码被保存在了Redis缓存中,因为Redis是一个高效的键值存储系统,常用于会话管理和其他临时数据存储。在Controller中,当用户请求验证码时,SpringBoot服务端会生成一个验证码,将其存入Redis,并...
本项目是一个安卓获取随机验证码的小例子,可以随机生成4位数字的验证码并且绘制有燥点和干扰线,绘制出的数字很小,如果视力不好估计看不见。不过如果想OCR识别肯定是很难的,有用到的朋友自己下载研究吧。
简介 captcha是一个图片验证码生成工具库,通过调用ImageCaptchaUtil中的方法来生成验证码图片...使用例子 //静态图片,支持返回图片的base64,base64Data,byte[] String code = RandomUtil . randomString( 5 ); Stri
在这个例子中,我们通过`$.ajax`向后台请求验证码初始化所需的数据,包括`gtId`、`gtTrans`等。当请求成功后,使用这些数据调用`initGeetest`函数进行初始化。`initGeetest`的回调函数中,我们为验证码的`onReady`...