kaptcha验证码使用

谷歌kaptcha图片验证码的使用 1.下载谷歌 kaptcha-2.3.2.jar 配置文档说明可查官网 package com.google.code.kaptcha; import java.awt.image.BufferedImage; public interface Producer { BufferedImage createImage(String var1); String createTe... 阅读详情

查看原文:http://www.ibloger.net/article/135.html

效果图:


官方地址:https://code.google.com/p/kaptcha/w/list

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

使用kaptcha可以方便的配置:

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

……

下面介绍一下用法:

实现方式有多种,下面介绍Spring注入方式和Servlet方式

Servlet方式

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

2.配置web.xml增加servlet

[html]  view plain  copy
 print ?
  1. <servlet>    
  2.         <servlet-name>Kaptcha</servlet-name>    
  3.         <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>    
  4. </servlet>    
  5. <servlet-mapping>    
  6.         <servlet-name>Kaptcha</servlet-name>    
  7.         <url-pattern>/kaptcha.jpg</url-pattern>    
  8. </servlet-mapping>    
3、在jsp页面中
[html]  view plain  copy
 print ?
  1. <form action="submit.action" method="post">    
  2.     <img src="kaptcha.jpg" id="kaptchaImage" /> <input type="text"    
  3.         name="kaptcha" value="" /> <input type="submit" name="submit"    
  4.         value="submit" />    
  5. </form>    
其中src="kaptcha.jpg"会被定位到servlet上

4、KaptchaServlet会把验证码设置到session中,可以如下方式获取

[html]  view plain  copy
 print ?
  1. String kaptchaExpected = (String)request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);  
5、如果是struts2的action,可以如下方式获取
[html]  view plain  copy
 print ?
  1. String kaptchaExpected = (String)ActionContext.getContext().getSession().get(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);    
6、如果想设置点击图片更换验证码,可以加上如下js,需要jquery
[html]  view plain  copy
 print ?
  1. <script type="text/javascript">    
  2.     $(function(){    
  3.         $('#kaptchaImage').click(function () { $(this).attr('src', '/kaptcha.jpg?' + Math.floor(Math.random()*100) ); })    
  4.     });    
  5. </script>    
7、或者来点fade效果
[html]  view plain  copy
 print ?
  1. <script type="text/javascript">    
  2.     $(function() {    
  3.         $('#kaptchaImage').click(    
  4.                 function() {    
  5.                     $(this).hide().attr('src',    
  6.                             'kaptcha.jpg?' + Math.floor(Math.random() * 100)).fadeIn();    
  7.                 });    
  8.     });    
  9. </script>    
8、验证码图片还有很多参数设置

设置方法,在web.xml的servlet中

[html]  view plain  copy
 print ?
  1. <init-param>    
  2.     <param-name>kaptcha.border</param-name>    
  3.     <param-value>no</param-value>    
  4. </init-param>    
Constant描述默认值
kaptcha.border图片边框,合法值:yes , noyes
kaptcha.border.color边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.black
kaptcha.border.thickness边框厚度,合法值:>01
kaptcha.image.width图片宽200
kaptcha.image.height图片高50
kaptcha.producer.impl图片实现类com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl文本实现类com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string文本集合,验证码值从此集合中获取abcde2345678gfynmnpwx
kaptcha.textproducer.char.length验证码长度5
kaptcha.textproducer.font.names字体Arial, Courier
kaptcha.textproducer.font.size字体大小40px.
kaptcha.textproducer.font.color字体颜色,合法值: r,g,b  或者 white,black,blue.black
kaptcha.textproducer.char.space文字间隔2
kaptcha.noise.impl干扰实现类com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color干扰颜色,合法值: r,g,b 或者 white,black,blue.black
kaptcha.obscurificator.impl图片样式:
水纹com.google.code.kaptcha.impl.WaterRipple
鱼眼com.google.code.kaptcha.impl.FishEyeGimpy
阴影com.google.code.kaptcha.impl.ShadowGimpy
com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl背景实现类com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from背景颜色渐变,开始颜色light grey
kaptcha.background.clear.to背景颜色渐变,结束颜色white
kaptcha.word.impl文字渲染器com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.keysession keyKAPTCHA_SESSION_KEY
kaptcha.session.datesession dateKAPTCHA_SESSION_DATE

9、

水纹效果


鱼眼效果


阴影效果

以下代码是我在SpringMVC中的代码

[java]  view plain  copy
 print ?
  1. package com.rapido.controller;  
  2.   
  3. import java.awt.image.BufferedImage;  
  4.   
  5. import javax.imageio.ImageIO;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. import org.springframework.beans.factory.annotation.Autowired;  
  11. import org.springframework.stereotype.Controller;  
  12. import org.springframework.web.bind.annotation.RequestMapping;  
  13. import org.springframework.web.servlet.ModelAndView;  
  14.   
  15. import com.google.code.kaptcha.Constants;  
  16. import com.google.code.kaptcha.Producer;  
  17.   
  18. /** 
  19.  * 随机验证码控制层 
  20.  *  
  21.  * 使用kaptcha-2.3.2.jar支持 
  22.  *  
  23.  * Captcha: Completely Automated Public Test to tell Computers and Humans 
  24.  * Apart(全自动区分计算机和人类的图灵测试) 
  25.  *  
  26.  * @author X-rapido 
  27.  *  
  28.  */  
  29. @Controller  
  30. @RequestMapping("/Captcha")  
  31. public class CaptchaRandomCodeController {  
  32.     private Producer captchaProducer = null;  
  33.   
  34.     @Autowired  
  35.     public void setCaptchaProducer(Producer captchaProducer) {  
  36.         this.captchaProducer = captchaProducer;  
  37.     }  
  38.   
  39.     @RequestMapping("/captcha-image")  
  40.     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {  
  41.         response.setDateHeader("Expires", 0);// 禁止服务器端缓存  
  42.         // 设置标准的 HTTP/1.1 no-cache headers.  
  43.         response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  
  44.         // 设置IE扩展 HTTP/1.1 no-cache headers (use addHeader).  
  45.         response.addHeader("Cache-Control", "post-check=0, pre-check=0");  
  46.         response.setHeader("Pragma", "no-cache");// 设置标准 HTTP/1.0 不缓存图片  
  47.         response.setContentType("image/jpeg");// 返回一个 jpeg 图片,默认是text/html(输出文档的MIMI类型)  
  48.         String capText = captchaProducer.createText();// 为图片创建文本  
  49.           
  50.         // 将文本保存在session中,这里就使用包中的静态变量吧  
  51.         request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  
  52.           
  53.         BufferedImage bi = captchaProducer.createImage(capText); // 创建带有文本的图片  
  54.         ServletOutputStream out = response.getOutputStream();  
  55.         // 图片数据输出  
  56.         ImageIO.write(bi, "jpg", out);  
  57.         try {  
  58.             out.flush();  
  59.         } finally {  
  60.             out.close();  
  61.         }  
  62.   
  63.         System.out.println("Session 验证码是:" + request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY));  
  64.         return null;  
  65.     }  
  66. }  

applicationContext.xml

[html]  view plain  copy
 print ?
  1. <!-- 验证码配置(也可以做web.xml的Servlet中配置),对应CaptchaRandomCodeController管理生成 -->  
  2. <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">  
  3.     <property name="config">  
  4.         <bean class="com.google.code.kaptcha.util.Config">  
  5.             <constructor-arg>  
  6.                 <props>  
  7.                     <prop key="kaptcha.border">yes</prop>  
  8.                     <prop key="kaptcha.border.color">105,179,90</prop>  
  9.                     <prop key="kaptcha.image.width">160</prop>  
  10.                     <prop key="kaptcha.image.height">50</prop>  
  11.                     <prop key="kaptcha.session.key">code</prop>  
  12.                     <prop key="kaptcha.textproducer.font.color">red</prop>  
  13.                     <prop key="kaptcha.textproducer.font.size">35</prop>  
  14.                     <prop key="kaptcha.textproducer.char.space">3</prop>  
  15.                     <prop key="kaptcha.textproducer.char.length">5</prop>  
  16.                     <!-- 配置中文 <prop key="kaptcha.textproducer.impl">com.google.code.kaptcha.text.impl.ChineseTextProducer</prop> -->  
  17.                     <prop key="kaptcha.textproducer.font.names">彩云,宋体,楷体,微软雅黑</prop>  
  18.                 </props>  
  19.             </constructor-arg>  
  20.         </bean>  
  21.     </property>  
  22. </bean>  


JSP

[javascript]  view plain  copy
 print ?
  1. <script type="text/javascript">  
  2.     $(function(){  
  3.         // 验证码渐变效果切换  
  4.         $('#kaptchaImage').click(  
  5.            function() {  
  6.                $(this).hide().attr('src','<%=basePath%>Captcha/captcha-image.do?'+ Math.floor(Math.random() * 100)).fadeIn();  
  7.             }  
  8.         );  
  9.     });  
  10. </script>  
[html]  view plain  copy
 print ?
  1. <c:if test="${sessionScope.loginSum >= 3 }">  
  2.     <tr>  
  3.         <td align="right">验证码: <img src="<%=basePath%>Captcha/captcha-image.do" height="25px" width="80px" id="kaptchaImage" /></td>  
  4.         <td><input type="text" name="kaptchaCode" id="kaptchaCode" value="" /></td>  
  5.     </tr>  
  6. </c:if>  

验证码不但可以使用图形还可以使用语音,比如SimpleCaptcha就可以,kaptcha扩展了SimpleCaptcha,等等都可以使用语音验证码,官方中有提供此类的demo可以下载部署在tomcat上使用

使用Java生成验证码的库有很多,比如以下列表中的举例

Java验证码生成库 JCaptcha

Struts验证码插件 JCaptcha4Struts2

Java图形验证码 SimpleCaptcha

Java验证码 kaptcha

Java验证码 patchca

Java验证码生成库 imageRandom

Java验证码库 iCaptcha

Java图片验证库SkewPassImage

Java 验证码 Cage

使用Kaptcha实现的验证码功能 此验证码功能是以SpringBoot框架下基于kaptcha插件来实现的。 阅读详情

相关推荐

深入解析EXI协议在ISO15118-2命令测试中的编解码实践

本文深入探讨了EXI协议在ISO15118-2车桩通信标准中的关键作用与实践方法。EXI编解码测试是确保通信准确性与效率的核心环节,文章详细介绍了从搭建测试环境、选择工具库到编写完整测试代码的全过程,并分析了结果差异的常见原因与调试技巧,为电动汽车充电系统的开发者提供了实用的技术指南。

potato的博客 1050

图片验证码实现的几种方式

图片验证码生成

大猩猩的博客 8546

FFmpeg实战:5分钟搞定m3u8视频下载与ts文件合并(附完整命令)

本文详细介绍了如何使用FFmpeg快速下载m3u8视频并合并ts文件为mp4格式。通过简洁的命令行操作,读者可以轻松完成视频处理任务,包括环境准备、链接获取、下载合并及性能优化等实用技巧,特别适合需要高效处理流媒体内容的用户。

weixin_30836759的博客 221

Kaptcha使用

Kaptcha使用。

Di_Pro_的博客 428

现场总线课程设计-基于modbus协议使用QT实现主从站控制通信

【平台:QT】 【协议:modbus(注:由于要求,需要自己来实现modbus库,而非直接调用已有的库)】 【由于复制粘贴,时间原因可能格式有误,如需要具体工程文件以及报告文件请私信博主】 1、 大作业任务: (1)使用附件中工具软件体验MODBUS主从站数据传输过程(可在主从站模拟工具里面观察各功能码对应数据帧内容并对其进行分析) (2)使用串口调试助手,手工发出MODBUS主、从站该发出的数据,并观察对方发出的数据 (3)实现MODBUS主、从站功能,描述实现过程(语言不限于使用VC

weixin_44469597的博客 4066

实验六 有源滤波器

实验六 有源滤波器一、实验目的二、仪器及设备三、预习要求画出三个电路的幅频特性曲线。四、实验内容l.低通滤波电路2.高通滤波电路3.带阻滤波电路(1)实测电路中心频率。(2)以实测中心频率为中心,测出电路幅频特性。五、实验报告六,仿真图:图 1 低通滤波器仿真图图 2 高通滤波器仿真图图 3 带阻滤波电路仿真图 一、实验目的 1.熟悉有源滤波电路构成及其特性。 2.学会测量有源滤波电路幅频特性。 二、仪器及设备 1.示波器 2.信号发生器 三、预习要求 1.预习教材有关滤波电路

胡毛毛的博客 1万+

Kaptcha图片验证码工具&SpringBoot整合kaptcha(谷歌验证码工具)实现验证码功能

验证码的作用图片验证码自从诞生以来从未被抛弃,依然发出属于它所应有的光。验证码经常验证如下一些场景。1、用户登录,防止机器人登录2、论坛留言,防止恶意灌水3、短信验证码发送,防止盗刷短信Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如: SpringBoot整合 Kaptcha 1、pom.xml文件中引入 2、配置DefaultKaptcha 3、编写controller 4、访问http://127.0.0.1:8083/verification 2:编写kaptcha配置类

qq_43842093的博客 2869

SRAM:SRAM入门指南与工作原理

SRAM(Static Random Access Memory),即静态随机存取存储器,是一种能够读取和写入数据的内存(RAM)。它使用由晶体管组成的触发器来存储数据,只要有电源供应,数据就可以稳定地保存。与动态随机存取存储器(DRAM)不同,SRAM 不需要周期性地刷新来保持数据。

weixin_42896509的博客 1万+

去除Kaptcha方法得到验证码的干扰线

去除Kaptcha方法得到验证码的干扰线 添加如下语句即可: properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");

boyames的博客 1511

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 728

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

java中的验证码的理解之springboot与kaptch的整合

一、背景 1.因为最近项目中要更换验证码,用的是kaptch与springboot,操作起来也是比较方便的,也趟了不少弯路,特意记下这个方法,以供大家学习参考,下面我们就来讲解下。 二、项目结构 三、详细的配置 1.pom.xml <!-- kaptcha --> <dependency> <groupId>com.google.code&l...

码农小默 1034

【swjtu】算法实验2.4分析算法时间复杂度

分析给定算法的时间复杂度。 上机实验,绘制不同输入情况下的运行时间曲线,并与(1)中的分析结果进行比较。 撰写相应的实验报告,实验报告内容包括:实验目的、实验任务、 实验环境、实验步骤、实验结果及其分析以及实验总结等部分内容。

qq_52046937的博客 731

使用 Kaptcha 生成验证码图片

本文将介绍如何在 Spring Boot 项目中使用 Kaptcha 生成验证码图片,并演示如何自定义验证码的内容、字体、扭曲程度等设置。Kaptcha 的 Constants 类是一个包含许多常量的类,用来管理验证码生成过程中所涉及的一些常用配置项。Kaptcha 是一个轻量级的 Java 库,能够生成各种类型的验证码图片,广泛应用于 Web 系统中。通过引用这些常量,能够使配置更加规范并减少错误。通过使用这些常量配置,我们不仅避免了硬编码,还能统一管理和调整验证码的设置,提升代码的可维护性和可读性。

qq_50134188的博客 1629

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SpringBoot集成Kaptcha验证码

本文全面介绍了Kaptcha验证码库的使用方法和特性。文章涵盖了Kaptcha的基本概念、主要特性、工作原理,以及在Java项目中的具体实现步骤。同时,深入探讨了Kaptcha的高级配置选项,包括去除干扰线、添加水纹效果等,并提供了详细的配置表。文章还讨论了使用验证码时的安全性考虑,分析了Kaptcha的优缺点,并对验证码技术的未来发展进行了展望。对于想要在web应用中实现高度可定制验证码的开发者来说,本文是一份全面而实用的指南。

shyの个人笔记 1892

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

kaptcha验证码插件的使用

验证码插件Kaptcha的使用,SpringMVC中使用Kaptcha验证码插件

CBeann的博客 2498

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

验证码工具之Kaptcha

验证码的作用 防止恶意破解密码、刷票、论坛灌水、刷页。 有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,百度社区),我们利用比较简易的方式实现了这个功能。虽然登录麻烦一点,但是对网友的密码安全来说这个功能还是很有必要,也很重要。但我们还是 提醒大家要保护好自己的密码 ,尽量使用混杂了数字、字母、...

qq_41665121的博客 825

Kaptcha 图像验证码

简介: kaptcha是一个可高度配置的使用验证码生成工具,可自由配置的选项如: 验证码字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字、字母、中文汉字!) 验证码图片的大小、边框、边框粗细、边框颜色 验证码干扰线 验证码的样式(鱼眼样式、3D、普通模糊) Kaptcha详细配置表 Constant 描述 默认值 kaptcha.border 图片边框,合法值:yes , no yes...

qq_35366466的博客 1205

SpringBoot整合Kaptcha实现图形验证码

SpringBoot整合Kaptcha实现图形验证码

DaenCode的博客 952

使用kaptcha快速生成验证码

文章目录 kaptcha会员注册和登录: 第一步,在Maven仓库中引入Kaptcha依赖(注意将新的jar,进行发布) 第二步,在applicationContext.xml文件中配置Kaptcha 第三步,创建Controller类,生成Kaptcha代码,并输出到前端 kaptcha会员注册和登录: 一、kaptcha是什么? 二、使用步骤 第一步,在Maven仓库中引入Kaptcha依赖(注意将新的jar,进行发布) 第二步,在applicat...

m0_47119893的博客 6581

Springboot整合kaptcha验证码

Springboot整合kaptcha验证码 01、通过配置类来配置kaptcha 01-01、添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </

qq_38231598的博客 1643

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 generatio

q291611265的专栏 5665

redis+kaptcha实现验证码登录

redis+kaptcha实现验证码登录,验证码登录实现起来还是不难,就是学redis花费了一点时间,

qq_63882856的博客 1166
上一篇: MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法
下一篇: 利用WebApplicationInitializer配置SpringMVC取代web.xml
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值