`
stone02111
  • 浏览: 214761 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

kaptcha 验证码组件使用简介

 
阅读更多


kaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到 HttpSession中。

使用kaptcha可以方便的配置:

 

  • 验证码的字体
  • 验证码字体的大小
  • 验证码字体的字体颜色
  • 验证码内容的范围(数字,字母,中文汉字!)
  • 验证码图片的大小,边框,边框粗细,边框颜色
  • 验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线)
  • 验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)

 

……

详细信息请看下面的web.xml文件

下面介绍一下用法:

1.首先去官网下载jar:http://code.google.com/p/kaptcha/

2.建立一个web项目,导入kaptcha-2.3.jar到环境变量中。

3.配置web.xml文件

<!--Kaptcha 验证码  --><!--
	<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>no</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.font.color</param-name>
			<param-value>red</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.image.width</param-name>
			<param-value>250</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.image.height</param-name>
			<param-value>90</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.textproducer.font.size</param-name>
			<param-value>70</param-value>
		</init-param>
		<init-param>
			<param-name>kaptcha.session.key</param-name>
			<param-value>code</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>/ClinicCountManager/kaptcha.jpg</url-pattern>
	</servlet-mapping>

 

jsp 页面使用

	<table>
			<tr>
				<td><img src="/ClinicCountManager/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>");
				}
			
		%>
 上面的配置在普通jsp环境下面是有效的,如果在spring mvc环境下,则取不到session值,对于sping mvc环境验证码配置如下:

1.不用在web.xml进行相关配置,在applicationContext.xml中配置

<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
		<property name="config">
			<bean class="com.google.code.kaptcha.util.Config">
				<constructor-arg>
					<props>
						<prop key="kaptcha.border">no</prop>
						<prop key="kaptcha.border.color">105,179,90</prop>
						<prop key="kaptcha.textproducer.font.color">red</prop>
						<prop key="kaptcha.image.width">250</prop>
						<prop key="kaptcha.textproducer.font.size">90</prop>
						<prop key="kaptcha.image.height">90</prop>
						<prop key="kaptcha.session.key">code</prop>
						<prop key="kaptcha.textproducer.char.length">4</prop>
						<prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
					</props>
				</constructor-arg>
			</bean>
		</property>
	</bean>

 

新建生成图片控制类

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;

@Controller
@RequestMapping("/")
public class CaptchaImageCreateController {
	
	private Producer captchaProducer = null;

	@Autowired
	public void setCaptchaProducer(Producer captchaProducer) {
		this.captchaProducer = captchaProducer;
	}

	@RequestMapping("/captcha-image")
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {

		response.setDateHeader("Expires", 0);
		// Set standard HTTP/1.1 no-cache headers.
		response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
		response.addHeader("Cache-Control", "post-check=0, pre-check=0");
		// Set standard HTTP/1.0 no-cache header.
		response.setHeader("Pragma", "no-cache");
		// return a jpeg
		response.setContentType("image/jpeg");
		// create the text for the image
		String capText = captchaProducer.createText();
		// store the text in the session
		request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
		// create the image with the text
		BufferedImage bi = captchaProducer.createImage(capText);
		ServletOutputStream out = response.getOutputStream();
		// write the data out
		ImageIO.write(bi, "jpg", out);
		try {
			out.flush();
		} finally {
			out.close();
		}
		return null;
	}

}

 

 前台调用方式

 <div class="chknumber">
        <label>验证码:        
        <input name="kaptcha" type="text" id="kaptcha" maxlength="4" class="chknumber_input" />             
        </label>
         <img src="/ClinicCountManager/captcha-image.do" width="55" height="20" id="kaptchaImage"  style="margin-bottom: -3px"/> 
        <script type="text/javascript">    
         $(function(){         
             $('#kaptchaImage').click(function () {//生成验证码
            	 $(this).hide().attr('src', '/ClinicCountManager/captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); })    
                   }); 
       
        </script> 
      </div>

 取验证码的方式

		String code = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
			

 如果需要全部数字

        <init-param>     
            <param-name>kaptcha.textproducer.char.string</param-name>     
            <param-value>0123456789</param-value>     
        </init-param>

 去掉干扰线

        <init-param>
            <param-name>kaptcha.noise.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.NoNoise </param-value>
        </init-param>
 
分享到:
评论
2 楼 gotosuzhou 2015-04-08  
我想问下, 怎么设置汉字 我这个验证码想要有汉字
1 楼 摸爬滚打NO1 2014-05-12  
很好,详细

相关推荐

    kaptcha验证码组件使用简介解析

    kaptcha验证码组件使用简介解析 Kaptcha验证码组件是基于SimpleCaptcha的开源项目,提供了强大的验证码生成和验证功能。该组件的使用非常方便,只需添加jar包依赖和简单的配置就可以使用了。 一、添加jar包依赖 ...

    vue+springboot+redis+kaptcha实现登录验证码

    本教程将介绍如何结合Vue.js前端框架、Spring Boot后端框架、Redis缓存服务以及Kaptcha验证码技术,实现一个前后端分离的登录页面验证码功能。这个组合可以提供高效、安全且用户友好的验证机制。 首先,Vue.js是一...

    kaptcha 验证码demo,附simplecaptcha

    Kaptcha的核心组件包括: 1. **Generator**: 生成验证码图像的类,负责将随机生成的文字转化为图像。 2. **Config**: 存储和管理验证码配置的接口,如字体、颜色、背景等。 3. **DefaultKaptcha**: 默认的验证码...

    谷歌验证码使用工具——kaptcha-2.3.2

    【谷歌验证码使用工具——kaptcha-2.3.2】是一款基于Java的开源验证码生成库,主要用于网站的身份验证,防止自动化的机器人或者恶意攻击者进行非法操作。kaptcha这个名字是"CAPTCHA"(Completely Automated Public ...

    验证码开源组件--Jcaptcha和Kaptcha

    本篇文章将详细讲解两个流行的验证码开源组件——Jcaptcha和Kaptcha,它们为开发者提供了便捷的方式来生成和验证图像验证码。 首先,Jcaptcha(Just Another CAPTCHA Toolkit)是一个强大的Java验证码框架,它提供...

    SimpleCaptcha验证码组件使用

    《SimpleCaptcha验证码组件使用详解》 验证码,作为一种防止恶意自动化操作的安全机制,在Web开发中扮演着至关重要的角色。SimpleCaptcha是一款轻量级的Java验证码生成组件,它以其简单易用、高度可定制的特点,...

    java验证码组件kaptcha使用方法

    Java验证码组件Kaptcha是用于生成图像验证码的一种工具,它由Google Code维护,为JAVA开发提供了简单易用的验证码实现。Kaptcha的主要目的是防止自动化程序(如机器人)对网站进行恶意操作,例如批量注册、刷票等。...

    kaptcha demo 简单的验证码工具

    通过 kaptcha_demo,开发者可以快速了解和掌握 Kaptcha 的使用,将其应用到自己的项目中,实现高效且安全的验证码功能。对于初学者,这是一个很好的学习资源,可以深入了解验证码的生成原理和实践应用。

    基于SSH实现登录的Demo

    在基于SSH实现登录的Demo中,我们通常会用到以下几个核心组件: 1. **SSH服务器**:这是接收客户端连接并处理SSH协议的服务器端软件,如OpenSSH服务器。 2. **SSH客户端**:客户端软件允许用户与SSH服务器交互,如...

    kaptcha.jar

    本文将深入探讨kaptcha.jar这一验证码资源包,揭示其工作原理、功能特性以及在实际应用中的使用方法。 kaptcha.jar是一个专门用于生成验证码的Java库,它为开发者提供了简单易用的API,以生成各种复杂度的图像...

    kaptcha-2.3.2.jar工具类

    kaptcha的核心功能在于生成复杂且难以由计算机识别的图像验证码,它的主要组件包括以下几个方面: 1. **配置参数**:kaptcha提供了丰富的配置选项,允许开发者自定义验证码的生成方式,例如字体类型、颜色、噪点、...

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

    这是因为Vue组件在`mounted`阶段已完成DOM挂载,此时进行初始化可以确保验证码组件正确地绑定到页面上。在`methods`对象中定义一个`init`方法,用于初始化验证码: ```javascript var app = new Vue({ el: '#app',...

    spring-gateway实现登录验证码校验的代码,百分百可用

    在本案例中,我们使用了 Kaptcha 插件来生成验证码。Kaptcha 是一个 Java 实现的验证码生成器,它可以生成包含字母和数字的复杂图片,并具有可配置的样式和扭曲程度,从而增加破解的难度。 首先,我们需要在项目中...

    kaptcha-spring-boot-starter-master.zip

    本文将深入探讨如何在Spring Boot框架下集成并使用Kaptcha组件,帮助开发者构建更安全的应用。 一、Kaptcha概述 Kaptcha,源自Google,主要任务是生成那些人类可以轻松识别但机器难以辨认的图像验证码。Kaptcha的...

    原创-用Ajax制作带图形验证码的登录页面.

    首先,需要下载Kaptcha图形验证码组件。可以从其官方地址 [http://code.google.com/p/kaptcha/](http://code.google.com/p/kaptcha/) 获取最新的版本(2.3版)。下载完成后,你会得到两个JAR文件:`Kaptcha-2.3.jar`...

    linux环境下验证码不显示问题

    - 考虑使用外部服务来生成验证码图片,这样可以避免直接在服务器端处理图形渲染,减少服务器负载。 - 例如,可以使用云服务提供商提供的API来生成验证码图片。 4. **升级Java版本**: - 如果当前使用的Java版本...

    三种方法实现验证码

    总结起来,实现验证码的方法多种多样,本文主要介绍了使用Servlet、JCaptcha和Kaptcha的实现方式。每种方法都有其特点和适用场景,开发者可以根据项目需求选择合适的技术。在实际开发中,验证码的安全性和用户体验都...

    kaptcha-2.3.2

    kaptcha的主要组件包括: 1. **Com抽象类**:这是验证码生成的基础,提供了生成和验证验证码的基本方法。子类化这个类可以实现自定义的验证码生成逻辑。 2. **DefaultKaptcha类**:这是kaptcha的默认实现,它实现...

    kaptcha232_jb51.rar

    2. **使用说明 .txt**:这可能是关于如何在项目中使用 kaptcha 库的指南,包括如何配置、如何生成验证码以及如何将其集成到 web 应用中的详细步骤。 3. **去脚本之家看看.url**:这可能是一个链接,指向脚本之家...

Global site tag (gtag.js) - Google Analytics