`
dukai1008
  • 浏览: 18149 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java自动生成验证码插件-kaptcha

阅读更多

今天无意间发现了一个很好用的验证码插件,java版的,很不错的一个插件,只用简单的在web.xml中设置几个属性,一个很漂亮的验证码就出来了。其他的参数都可以自己设置,最牛的就是提供了接口,可以自己定义哦。

        先发个图来看看:

验证码
 
        怎么样,还不错吧,这个图是我设置长宽后生成的,有点点大,不过没关系,这个可以自己设置的。

        多大概设置了边框,字体,个数,字的大小,长,宽,中文接口等这几个属性,然后很简单的就生成了这样一个验证码,呵呵,不错,很简单。

        看看配置:
<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.randcode.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.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> 
 呵呵,还简洁吧。这个插件自带了个中文生成类,但是这个类做得很死,中文是手动输入进去的,我的天,太死了,然后leo就找啊找,发现API中有一个自定义接口,哈哈,太好了,正好我之前有一个生成中文的程序,直接COPY过来,写了个简单的类,测试,成功了,就是上面发的图。接口是这个:
<init-param>     
     <param-name>kaptcha.textproducer.impl</param-name>     
     <param-value>com.randcode.ChineseText</param-value>     
</init-param> 
 
如果有朋友不知道怎么用的,可以联系我。
生成中文的代码:
package com.randcode;

import java.util.Random;

import com.google.code.kaptcha.text.TextProducer;
import com.google.code.kaptcha.util.Configurable;

public class ChineseText extends Configurable implements TextProducer{

	public String getText() {
		int length = getConfig().getTextProducerCharLength();
		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;
	}
}
 
分享到:
评论
18 楼 Rong_it 2011-03-02  
汗... 这字我都不认识...
17 楼 Lyishuai 2010-09-14  
qinglintan 写道
height,width,size,调小无法看清了。

我也试了下,确定是这样,字体小了就看不清了。。。。。。
16 楼 windlike 2010-09-13  
这个应该叫类库或框架
15 楼 tanglei528 2010-09-13  
LZ 这个插件的下载地址有吗?
14 楼 qinglintan 2010-09-13  
height,width,size,调小无法看清了。
13 楼 qinglintan 2010-09-13  
width,height,size,调小一点,就看不清了。
12 楼 qinglintan 2010-09-13  
一直都是用自定义的jsp,来生成验证码。
11 楼 左看右看 2010-09-13  
生成的中文很多是生僻字,改成常用字就好多了!
10 楼 dukai1008 2010-09-13  
cw1011 写道
可以不可以把你那个生成中文的东西发出来看看啊


发上去了,你没看到而已
9 楼 cw1011 2010-09-13  
可以不可以把你那个生成中文的东西发出来看看啊
8 楼 dukai1008 2010-09-13  
<div class="quote_title">lotnhiro 写道</div>
<div class="quote_div">额,,,,,楼主能给你的那个生成中文的代码好吗? <br><br>小弟在这里谢谢</div>
<p> </p>
<p> </p>
<pre name="code" class="java">package com.randcode;

import java.util.Random;

import com.google.code.kaptcha.text.TextProducer;
import com.google.code.kaptcha.util.Configurable;

public class ChineseText extends Configurable implements TextProducer{

public String getText() {
int length = getConfig().getTextProducerCharLength();
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&lt;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&amp;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;
}
}
</pre>
<p> </p>
7 楼 kmkim 2010-09-13  
恩,是不错啊。。。。谢谢了啊
6 楼 huangyuanmu 2010-09-13  
咋都不知道google嘛,楼主都说了名字了------kaptcha

正巧前边项目里用过,不错的,也推荐一下。

用起来很简单,按默认设置的话,不需要编写代码,只要在web.xml里配置个servlet就可以了。

它的强大之处就是定义了很多参数,可以根据自己的需要进行验证码定制。
5 楼 lotnhiro 2010-09-12  
额,,,,,楼主能给你的那个生成中文的代码好吗?

小弟在这里谢谢
4 楼 BestUpon 2010-09-12  
<p><strong>使用jcaptcha 很好用,最新的版本配置很简单,几乎不需要什么配置就可以了。只需要在web.xml中配置:</strong><br><br></p>
<pre name="code" class="xml">&lt;servlet&gt;
        &lt;servlet-name&gt;jcaptcha&lt;/servlet-name&gt;
        &lt;servlet-class&gt;com.octo.captcha.servlet.image.SimpleImageCaptchaServlet&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
        &lt;servlet-name&gt;jcaptcha&lt;/servlet-name&gt;
        &lt;url-pattern&gt;/jcaptcha.jpg&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</pre>

<p> 前台使用:</p>
<p>
</p>
<pre name="code" class="html">&lt;form action="submit.action"&gt;
...
    &lt;img src="jcaptcha.jpg" /&gt; &lt;input type="text" name="jcaptcha" value="" /&gt;
...
&lt;/form&gt;</pre>
 并且是彩色的验证码:<img src="http://dl.iteye.com/upload/attachment/307614/5b1ea783-8517-374b-9d3b-5e7a66a1ef6e.png" alt=""><p> </p>
<p> </p>
3 楼 dukai1008 2010-09-11  
<div class="quote_title">zhao103804 写道</div>
<div class="quote_div">话说,干扰线太少了点吧 <br>PS:楼主没有说是什么插件</div>
<p> </p>
<p> 我说了的,可以自己定义,你可以看看百度的验证码,看看有几条线</p>
<p> </p>
<p>还有,插件我在标题里面写了的哦。。</p>
2 楼 zhao103804 2010-09-11  
话说,干扰线太少了点吧
PS:楼主没有说是什么插件
1 楼 ol_beta 2010-09-11  
恩 我现在就测试测试

相关推荐

    kaptcha-2.3.2-google验证码插件

    【kaptcha-2.3.2-google验证码插件】是一个基于Java开发的验证码生成插件,主要用于网站的安全验证,防止恶意自动程序(如机器人)进行非法操作,如批量注册、频繁提交表单等。该插件是Google开发的,因此在安全性和...

    SpringBoot整合Kaptcha(图形验证码)

    在这个Controller中,`/captcha`接口用于生成验证码并将其发送到客户端,而`/validate`接口则接收客户端提交的验证码进行验证。在生成验证码时,我们将验证码文本保存在HttpSession中,以便后续验证。 为了在实际...

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

    `Kaptcha`是一个开源Java库,专为生成验证码图像而设计,具有高度可配置性,可以轻松集成到Web应用中。 首先,我们需要了解`Kaptcha`插件的基本用法。在Java项目中,你可以通过Maven或Gradle添加`kaptcha`依赖。...

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

    3. 高效生成:Kaptcha生成验证码的速度快,且内存占用小,适合高并发场景。 4. 默认实现:Kaptcha提供了默认的验证码生成器,无需额外的依赖,即可生成基本的验证码图像。 在实际使用中,这两个组件都可以通过Maven...

    kaptcha验证码

    总的来说,kaptcha作为一款优秀的Java验证码插件,以其简单的集成方式和高度可定制性,使得开发者能轻松地在项目中实现安全的验证码功能。无论是小型个人项目还是大型企业系统,kaptcha都能成为可靠的验证码解决方案...

    kaptcha验证码生成jar包后台配置源代码

    kaptcha生成验证码的作用:进行人机校验--防止机器脚本自动大量注册用户。 1、Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。 2、过Kaptcha可阻拦大多数机器人脚本操作。 3、kaptcha典型殷用于注册、登录、...

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

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

    kaptcha-2.3.2.jar

    《Kaptcha:Google开发的验证码插件解析》 在网络安全领域,验证码(CAPTCHA)扮演着至关重要的角色,它能够有效防止自动化的机器人程序进行恶意操作,如垃圾邮件的发送、账户的非法注册等。在Java开发环境中,...

    SpringBoot集成Kaptcha验证码生成器快速入门Demo

    编译器版本:IntelliJ IDEA 2020.3.2 x64 JDK版本:java 1.8.0_111 SpringBoot集成Kaptcha验证码生成器快速入门Demo,演示Kaptcha验证码生成器后端代码和前端测试页面

    java基础知识大全

    这个Servlet主要用于生成验证码图片。 - `&lt;init-param&gt;`标签用于配置Servlet的初始化参数: - `kaptcha.image.width`:设置验证码图片的宽度为85像素。 - `kaptcha.image.height`:设置验证码图片的高度为40像素...

    蓝莓商城(这个商城用到的技术挺新的,不是我写的,来赚点分数)

    一.开发环境 IDE: Eclipse 4.7.2 ...验证码库: kaptcha 三.前端技术 JS框架:Jquery CSS框架:bootstrap 多级列表树插件:zTree 富文本编辑器:wangEditor 三.前后端交互 主要使用AJAX传输数据!

    【20210611】Springboot开发系统支持与配置文件.pdf

    图形验证码的生成则可以通过`kaptcha`库来实现,这在用户登录验证等场景中非常常见。 此外,文件中还提到了其他一些依赖,可能包括但不限于日志记录、安全控制、邮件发送等功能的组件。每个依赖都有其特定的版本号...

    spring-boot-starter-samples:spring-boot-starter-samples

    16. **Kaptcha**:Kaptcha是一个生成验证码的库,Spring Boot starter-kaptcha则用于在Spring Boot应用中集成验证码功能。 17. **Ehcache3**:Ehcache 3是流行的Java缓存库,Spring Boot starter-ehcache3提供了对...

    SpringBoot整合Shiro完整源码(含sql脚本).rar

    5.2 验证码:可以使用第三方库如Kaptcha生成验证码,将其结果存入session,并在登录页面显示,验证时比对输入的验证码是否正确。 六、SQL脚本与数据初始化 6.1 `authority.sql`:这个文件可能包含了权限相关的...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    3、**验证码(Kaptcha)**:RuoYi中的验证码实现采用Kaptcha库,配置类CaptchaConfig中可定制验证码生成器KaptchaTextCreator。 4、**登录(JWT)**:RuoYi使用JWT(JSON Web Tokens)进行身份验证,提供安全的无状态...

    如何构建快速的mvc开发环境

    8. **kaptcha 0.0.9**:生成图片验证码的库。 9. **quartz-all 1.6.0** 和 **zookeeper 3.4.5**:用于定时任务调度和分布式调度。 10. **Libzkclient 0.3** 和 **Kafkaclient 0.9.0.1**:Kafka客户端,实现消息...

Global site tag (gtag.js) - Google Analytics