验证码开源类库Kaptcha
来源:互联网 发布:英雄联盟17173数据库 编辑:程序博客网 时间:2024/06/10 08:24
Kaptcha作为开源类库,可以用来生成在注册账户时所需的验证码图片。
在pom中的配置
<!--Kaptcha是用于生成验证码的开源类库--> <dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</artifactId> <version>2.3</version> <classifier>jdk15</classifier> </dependency>
但是Kaptcha并不在中央仓库中,需要到Sonatype Forge仓库中下载,在pom中配置如下:
<!--Kaptcha并没有上传到中央仓库,可以从Sonatype Forge仓库获得该构件--> <repositories> <repository> <id>sonatype-forge</id> <name>Sonatype Forge</name> <url>http://repository.sonatype.org/content/groups/forge/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
整个业务流程是:
0、初始化验证码生成器
//类实现InitializingBean,在初始化对象的时候,调用afterPropertiesSet方法,初始化验证码生成器producer //并提供默认配置 private DefaultKaptcha producer; public void afterPropertiesSet(){ producer=new DefaultKaptcha(); producer.setConfig(new Config(new Properties())); }
1、生成验证码主键 和 验证码值,并构成Map
//产生验证码主键 和 验证码值,放在Map中 private Map<String,String> captchaMap=new HashMap<String, String>(); public String generateCaptchaKey(){ String key=getRandomString(); //产生验证码值 String value=producer.createText(); captchaMap.put(key,value); return key; }//产生验证码主键public String getRandomString(){ String range="0123456789abcdefghijklmnopqrstuvwxyz"; Random random=new Random(); StringBuffer sb=new StringBuffer(); for(int i=0;i<6;i++){ sb.append(range.charAt(random.nextInt(range.length()))); } return sb.toString(); }
2、生成验证码图片
//产生验证码图片 public byte[] generateCaptchaImage(String captchaKey){ String value=captchaMap.get(captchaKey); BufferedImage image=producer.createImage(value); ByteArrayOutputStream out=new ByteArrayOutputStream(); //或者保存到本地 // OutputStream output=new FileOutputStream(new File("")); //output.write() try{ ImageIO.write(image,"jpg",out); }catch (Exception e){ e.printStackTrace(); } return out.toByteArray(); }
3、验证结果
//验证结果 public boolean validateCaptcha(String captchaKey,String captchaValue){ String value=captchaMap.get(captchaKey); if(value.equals(captchaValue)){ captchaMap.remove(captchaKey); return true; }else{ return false; } }
0 0
- 验证码开源类库Kaptcha
- kaptcha验证码使用
- kaptcha验证码使用
- kaptcha验证码使用
- Java 验证码 kaptcha
- kaptcha验证码使用
- kaptcha中文验证码
- kaptcha验证码使用
- kaptcha验证码
- kaptcha验证码生成
- kaptcha验证码使用
- kaptcha验证码
- Kaptcha生成验证码
- kaptcha 验证码使用
- kaptcha验证码使用
- kaptcha验证码使用
- kaptcha验证码
- kaptcha 验证码组件
- AJAX+PHP实现图片异步上传的实例详解
- 构造函数
- python matplotlib 编码问题
- TensorFlow 官方文档中文版解读之2——tf.sparse_to_dense的用法
- 判断传入的参数是否是数组
- 验证码开源类库Kaptcha
- SVM对sklearn自带手写数字数据集进行分类
- 进程间通信之文件映射
- 拷贝构造 赋值构造
- 常见的进程调度算法
- 文章标题 UVA 12299 : RMQ with Shifts(线段树+点修改)
- TensorFlow 官方文档中文版解读之1 ——tf.concat的用法的用法
- android View绘制流程与机制
- The sum problem