文档章节

jcaptche使用例子

xpbob
 xpbob
发布于 2016/08/06 11:03
字数 559
阅读 32
收藏 1

 

spring管理类

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"

default-lazy-init="true">

 

<bean id="captchaService" class="com.octo.captcha.service.multitype.GenericManageableCaptchaService">

<constructor-arg index="0" ref="imageEngine"/>

<constructor-arg type="int" index="1" value="180"/>

<constructor-arg type="int" index="2" value="100000"/>

<constructor-arg type="int" index="3" value="75000"/>

</bean>

<bean id="imageEngine" class="com.octo.captcha.engine.GenericCaptchaEngine">

<constructor-arg index="0">

<list>

<ref bean="captchaFactory"/>

</list>

</constructor-arg>

</bean>

 

<bean id="captchaFactory" class="com.octo.captcha.image.gimpy.GimpyFactory">

<constructor-arg>

<ref bean="wordgen"/>

</constructor-arg>

<constructor-arg>

<ref bean="wordtoimage"/>

</constructor-arg>

</bean>

 

<bean id="wordgen" class= "com.octo.captcha.component.word.wordgenerator.RandomWordGenerator">

<!--可选字符-->

<constructor-arg>

<value>aabbccddeefgghhkkmnnooppqqsstuuvvwxxyyzz</value>

</constructor-arg>

</bean>

 

<bean id="wordtoimage" class="com.octo.captcha.component.image.wordtoimage.ComposedWordToImage">

<constructor-arg index="0">

<ref bean="fontGenRandom"/>

</constructor-arg>

<constructor-arg index="1">

<ref bean="backGenUni"/>

</constructor-arg>

<constructor-arg index="2">

<ref bean="decoratedPaster"/>

</constructor-arg>

</bean>

 

<bean id="fontGenRandom" class="com.octo.captcha.component.image.fontgenerator.RandomFontGenerator">

<!--最小字体-->

<constructor-arg index="0">

<value>26</value>

</constructor-arg>

<!--最大字体-->

<constructor-arg index="1">

<value>34</value>

</constructor-arg>

<constructor-arg index="2">

<list>

<bean class="java.awt.Font">

<constructor-arg index="0"><value>Arial</value></constructor-arg>

<constructor-arg index="1"><value>0</value></constructor-arg>

<constructor-arg index="2"><value>32</value></constructor-arg>

</bean>

</list>

</constructor-arg>

</bean>

<bean id="backGenUni" class="com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator">

<!--背景宽度-->

<constructor-arg index="0">

<value>110</value>

</constructor-arg>

<!--背景高度-->

<constructor-arg index="1">

<value>50</value>

</constructor-arg>

</bean>

 

<bean id="decoratedPaster" class="com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster">

<!--最大字符长度-->

<constructor-arg type="java.lang.Integer" index="0">

<value>4</value>

</constructor-arg>

<!--最小字符长度-->

<constructor-arg type="java.lang.Integer" index="1">

<value>4</value>

</constructor-arg>

<!--文本颜色-->

<constructor-arg index="2">

<ref bean="colorGen"/>

</constructor-arg>

<!--文本混淆-->

<constructor-arg index="3">

<list>

<!--<ref bean="baffleDecorator"/>-->

</list>

</constructor-arg>

</bean>

<bean id="baffleDecorator" class="com.octo.captcha.component.image.textpaster.textdecorator.BaffleTextDecorator">

<constructor-arg type="java.lang.Integer" index="0"><value>1</value></constructor-arg>

<constructor-arg type="java.awt.Color" index="1"><ref bean="colorWrite"/></constructor-arg>

</bean>

<bean id="colorGen" class="com.octo.captcha.component.image.color.SingleColorGenerator">

<constructor-arg type="java.awt.Color" index="0">

<ref bean="colorBlack"/>

</constructor-arg>

</bean>

<bean id="colorWrite" class="java.awt.Color">

<constructor-arg type="int" index="0">

<value>255</value>

</constructor-arg>

<constructor-arg type="int" index="1">

<value>255</value>

</constructor-arg>

<constructor-arg type="int" index="2">

<value>255</value>

</constructor-arg>

</bean>

<bean id="colorBlack" class="java.awt.Color">

<constructor-arg type="int" index="0">

<value>50</value>

</constructor-arg>

<constructor-arg type="int" index="1">

<value>50</value>

</constructor-arg>

<constructor-arg type="int" index="2">

<value>50</value>

</constructor-arg>

</bean>

</beans>

 

pom.xml需要配置第三方的jar包

 

 

<repositories>

<repository>

<id>atlassian</id>

<name>atlassian</name>

<url>http://maven.jahia.org/maven2/</url>

</repository>

</repositories>

 

maven

 

<dependency>

<groupId>com.octo.captcha</groupId>

<artifactId>jcaptcha</artifactId>

<version>1.0</version>

</dependency>

 

 

生成图片

 

@Controller

public class JCaptcheImg {

 

 

@Autowired

private ImageCaptchaService imageCaptchaService;

 

@RequestMapping("/img")

public void handleRequest(HttpServletRequest request, HttpServletResponse response) {

try {

ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();

String captchaId = request.getSession().getId();

BufferedImage challenge = imageCaptchaService.getImageChallengeForID(captchaId, request.getLocale());

 

response.setHeader("Cache-Control", "no-store");

response.setHeader("Pragma", "no-cache");

response.setDateHeader("Expires", 0L);

response.setContentType("image/jpeg");

 

ImageIO.write(challenge, "jpeg", jpegOutputStream);

byte[] captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

 

ServletOutputStream respOs = response.getOutputStream();

respOs.write(captchaChallengeAsJpeg);

respOs.flush();

respOs.close();

} catch (IOException e) {

e.printStackTrace();

}

}

 

 

}

 

前端调用

 

<input type="text" id="captcha" name="captcha" maxlength="4" /> <img

src="img.do" onclick="this.src='img.do?d='+new Date().getTime()" />

 

后台校验

 

public class TestTemplate {

 

@Autowired

private ImageCaptchaService imageCaptchaService;

 

@RequestMapping("/login.do")

public void Login( String captcha, HttpServletRequest request) {

Boolean result = Boolean.FALSE;

 

Boolean isResponseCorrect = imageCaptchaService.validateResponseForID(request.getSession().getId(), captcha);

 

if (isResponseCorrect){

 

}else{

 

}

 

}

}

© 著作权归作者所有

xpbob

xpbob

粉丝 98
博文 96
码字总数 77864
作品 0
高级程序员
私信 提问
Java中的泛型(二)

泛型可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。这篇文章主要介绍泛型应用于接口、方法和匿名内部类的一...

阿杜
2017/12/09
0
0
bootstrap-图标菜单按钮组件

image.png 小图标组件 image.png http://v3.bootcss.com/components/#glyphicons(借鉴别人文章) 需要注意,可能在页面中使用图标时,设置好代码可图标却显示不出来,若遇到此问题,需要注意...

lilyping
2017/11/23
0
0
Java泛型基础(二)

本文首发于个人网站:Java中的泛型(二) 泛型可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。这篇文章主要...

杜琪
2017/12/09
0
0
bootstrap-输入框和导航组件

image.png 一.输入框组件 image.png (可以用在弄搜索条) 例子 例子 效果图 效果图 image.png 例子 例子 效果图 效果图 左侧使用下拉菜单分别式 image.png 例子 例子 效果图 效果图 二.导航...

lilyping
2017/11/22
0
0
Qt 多线程之 std::thread (一)

不时见到有人会这样做: 不使用QThread,而是使用pthread等平台相关的底层 api 而又不想使用底层线程间同步、通讯的api 那么,如何使用pthread,而又使用Qt提供的线程间机制呢? 本文的初衷源...

晨曦之光
2012/05/08
605
0

没有更多内容

加载失败,请刷新页面

加载更多

spring 本类中方法调用另外一个方法事务不生效

1、在spring配置文件中添加 <aop:aspectj-autoproxy expose-proxy="true"/> 声明自动代理 2、AopContext.currentProxy()来获取代理类 3、使用代理类proxy进行代理调用内部声明了事务的方法 ......

重城重楼
9分钟前
0
0
项目 banner 乱弹

------------------------------------------ 村上春树 ------------------------------------- 如果我爱你,而你也正巧爱我,你头发乱了的时候,我会笑笑地替你拨一拨,然后手还留恋地在你...

宿小帅
21分钟前
0
0
PHP获取未来七天的日期和星期

php获取未来七天的日期和星期代码 第一步:获取需要天数的日期,然后调用函数 //获取未来七天的日期 for($i=1;$i<8;$i++){ $dateArray[$i]=date('Y-m-d',strtotime(d...

一只懒猫-
33分钟前
0
0
总结:IO模型

分类 多路复用 参考文章: https://www.jianshu.com/p/6a6845464770 https://www.cnblogs.com/zingp/p/6863170.html https://blog.csdn.net/sehanlingfeng/article/details/78920423......

浮躁的码农
36分钟前
0
0
fabric-sdk-java 1.4安装说明

Hyperledger Fabric Java SDK是开发基于Hyperledger Fabric区块链的Java应用之必备开发包。本文将介绍如何在Maven、Gradle和Eclipse中安装使用最新1.4版本的Hyperledger Fabric Java SDK。 ...

汇智网教程
37分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部