`

kaptcha 例子

    博客分类:
  • java
阅读更多

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 !



 

  • 大小: 17.5 KB
分享到:
评论

相关推荐

    验证码例子(kaptcha插件的使用)

    在本案例中,我们将探讨如何使用`Kaptcha`插件来生成动态验证码。`Kaptcha`是一个开源Java库,专为生成验证码图像而设计,具有高度可配置性,可以轻松集成到Web应用中。 首先,我们需要了解`Kaptcha`插件的基本用法...

    kaptcha-2.3.2 生成验证码

    `kaptcha生成验证码例子 - fonter - ITeye技术网站_files` 文件夹可能包含了网页展示验证码时所需的图片和其他资源。 要使用`kaptcha`,首先需要在项目中引入依赖,如果是Maven项目,可以在pom.xml文件中添加`...

    登陆验证码kaptcha结合spring boot的用法详解

    在这个例子中,`/captcha/generate`端点用于生成新的验证码,并将其存储在用户会话中。同时,返回的是Base64编码的验证码图像,以便在前端展示。而`/captcha/validate`端点用于验证用户输入的验证码是否与会话中的...

    验证码jar包小例子_导入即可

    最方便kaptcha验证码jar包,给页面添加验证码图片。

    java基础知识大全

    在给定的内容中,可以看到一个Servlet的配置例子,这是Java Web开发中的重要内容之一。Servlet是一种服务器端的技术,用于扩展应用程序的功能。Servlet可以收集来自HTML表单的数据,处理数据(如查询数据库),或者...

    SimpleCaptcha验证码组件使用

    以下是一个简单的生成验证码的例子: ```java KaptchaProducer kaptcha = new DefaultKaptcha(); String text = kaptcha.createText(); BufferedImage image = kaptcha.createImage(text); // 将image保存或...

    【JavaScript源代码】vue+springboot实现登录验证码.docx

    在这个例子中,验证码被保存在了Redis缓存中,因为Redis是一个高效的键值存储系统,常用于会话管理和其他临时数据存储。在Controller中,当用户请求验证码时,SpringBoot服务端会生成一个验证码,将其存入Redis,并...

    添加噪点和干扰线的验证码

    本项目是一个安卓获取随机验证码的小例子,可以随机生成4位数字的验证码并且绘制有燥点和干扰线,绘制出的数字很小,如果视力不好估计看不见。不过如果想OCR识别肯定是很难的,有用到的朋友自己下载研究吧。

    captcha:图形验证码生成工具类,可以自定义图片尺寸,干扰项等等

    简介 captcha是一个图片验证码生成工具库,通过调用ImageCaptchaUtil中的方法来生成验证码图片...使用例子 //静态图片,支持返回图片的base64,base64Data,byte[] String code = RandomUtil . randomString( 5 ); Stri

    vue中使用极验验证码的方法(附demo)

    在这个例子中,我们通过`$.ajax`向后台请求验证码初始化所需的数据,包括`gtId`、`gtTrans`等。当请求成功后,使用这些数据调用`initGeetest`函数进行初始化。`initGeetest`的回调函数中,我们为验证码的`onReady`...

Global site tag (gtag.js) - Google Analytics