`
z75148885
  • 浏览: 191481 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用开源组件jcaptcha做jsp彩色验证码

阅读更多
安装

Add jcaptcha-all.jar (provided in bin-distribution) and ehcache.jar (not provided see ehcache site) to your application class path, ie in you WEB-INF/lib folder.

实例一个jcaptcha服务,注意,必须是单例模式的
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->importcom.octo.captcha.service.image.ImageCaptchaService;
importcom.octo.captcha.service.image.DefaultManageableImageCaptchaService;

publicclassCaptchaServiceSingleton{

privatestaticImageCaptchaServiceinstance=newDefaultManageableImageCaptchaService();

publicstaticImageCaptchaServicegetInstance(){
returninstance;
}
}

注:以上是默认的一个实现,下面是其他更多的实现
  • SimpleListSoundCaptchaEngine //还可以用声音,真爽哦
  • SpellerSoundCaptchaEngine
  • SpellerSoundCaptchaEngine
  • DefaultGimpyEngineCaptcha
  • BaffleListGimpyEngineCaptcha
  • BasicListGimpyEngineCaptcha
  • DeformedBaffleListGimpyEngineCaptcha
  • DoubleRandomListGimpyEngineCaptcha
  • SimpleListImageCaptchaEngineCaptcha
  • SimpleFishEyeEngineCaptcha
具体请参考官方说明

编写一个产生图片的servlet


<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->importcom.octo.captcha.service.CaptchaServiceException;
importcom.sun.image.codec.jpeg.JPEGCodec;
importcom.sun.image.codec.jpeg.JPEGImageEncoder;

importjavax.servlet.ServletConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.awt.image.BufferedImage;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;


publicclassImageCaptchaServletextendsHttpServlet{


publicvoidinit(ServletConfigservletConfig)throwsServletException{

super.init(servletConfig);

}


protectedvoiddoGet(HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse)throwsServletException,IOException{

byte[]captchaChallengeAsJpeg=null;
//theoutputstreamtorenderthecaptchaimageasjpeginto
ByteArrayOutputStreamjpegOutputStream=newByteArrayOutputStream();
try{
//getthesessionidthatwillidentifythegeneratedcaptcha.
//thesameidmustbeusedtovalidatetheresponse,thesessionidisagoodcandidate!
StringcaptchaId=httpServletRequest.getSession().getId();
//calltheImageCaptchaServicegetChallengemethod
BufferedImagechallenge=
CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,
httpServletRequest.getLocale());

//ajpegencoder
JPEGImageEncoderjpegEncoder=
JPEGCodec.createJPEGEncoder(jpegOutputStream);
jpegEncoder.encode(challenge);
}
catch(IllegalArgumentExceptione){
httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
}
catch(CaptchaServiceExceptione){
httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}

captchaChallengeAsJpeg
=jpegOutputStream.toByteArray();

//flushitintheresponse
httpServletResponse.setHeader("Cache-Control","no-store");
httpServletResponse.setHeader(
"Pragma","no-cache");
httpServletResponse.setDateHeader(
"Expires",0);
httpServletResponse.setContentType(
"image/jpeg");
ServletOutputStreamresponseOutputStream
=
httpServletResponse.getOutputStream();
responseOutputStream.write(captchaChallengeAsJpeg);
responseOutputStream.flush();
responseOutputStream.close();
}
}


为servlet修改web.xml配置文件
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>ImageCaptchaServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>


<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha</url-pattern>
</servlet-mapping>


编写你的客户端的展示
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><imgsrc="jcaptcha">
<inputtype='text'name='j_captcha_response'value=''>

上面的src="jcaptcha" 就是调用了上面的servlet,text里是用户填写的确认验证码

后台逻辑验证
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->BooleanisResponseCorrect=Boolean.FALSE;
//remenberthatweneedanidtovalidate!
StringcaptchaId=httpServletRequest.getSession().getId();
//retrievetheresponse
Stringresponse=httpServletRequest.getParameter("j_captcha_response");
//CalltheServicemethod
try{
isResponseCorrect
=CaptchaServiceSingleton.getInstance().validateResponseForID(captchaId,
response);
}
catch(CaptchaServiceExceptione){
//shouldnothappen,maybethrowniftheidisnotvalid
}

分享到:
评论

相关推荐

    jcaptcha做jsp彩色验证码

    标题"jcaptcha做jsp彩色验证码"即指使用jCaptcha库在JSP应用中生成彩色的验证码图片。 首先,我们需要引入jCaptcha的相关依赖。在这个案例中,我们看到压缩包内的"jcaptcha-all-1[1].0-RC6.jar"就是jCaptcha的核心...

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

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

    利用java开源组件实现生成验证码

    利用java开源组件及servlet实现生成验证码

    jcaptcha-sample_验证码生成

    `jCaptcha` 是一个基于 Java 的开源验证码库,它提供了高度可定制的验证码生成服务。`jcaptcha-sample` 是 `jCaptcha` 库的一个示例项目,用于展示如何在实际应用中集成和使用 jCaptcha。 验证码的主要目标是防止...

    验证码 验证码例子 jcaptcha jcaptcha例子

    此外,还可以使用jCaptcha提供的JSP标签库来简化视图层的集成。 总之,jCaptcha作为一款强大的Java验证码库,提供了丰富的功能和高度的可定制性,可以帮助开发者在Web应用中有效地实施验证码验证,提高系统的安全性...

    产品开源组件清单.xlsx

    产品开源组件清单

    java通过JCaptcha生成验证码

    首先,JCaptcha 是一个开源的 Java 验证码库,它提供了丰富的定制选项,包括自定义干扰线和背景图片,以增加验证码的复杂性,从而降低被机器识别的可能性。以下是一些关键知识点: 1. **安装 JCaptcha**:在项目中...

    OpenSCA是一款开源的软件成分分析工具,用来扫描项目的第三方开源组件依赖及漏洞信息

    1. **组件识别**:OpenSCA能够自动检测项目中使用的各种开源库、框架、模块等组件,通过比对庞大的开源组件数据库,准确地识别出组件的名称、版本和许可证信息。 2. **漏洞检测**:一旦识别出项目中的开源组件,...

    jcaptcha写验证码要用到的jar包

    以上就是使用Jcaptcha生成和验证验证码所需的关键知识点。在实际开发中,开发者需要根据项目需求调整和优化这些步骤,确保验证码机制既安全又易于使用。参考链接中的博客文章...

    jcaptcha验证码所需jar包

    在使用jcaptcha时,开发人员需要配置jcaptcha的相关参数,如验证码的样式、复杂度、过期时间等,并在Web应用的过滤器配置中添加jcaptcha的过滤器,以确保在每次请求时生成新的验证码,并在提交表单时验证用户的输入...

    开源嵌入式QT组件开源嵌入式QT组件

    开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源嵌入式QT组件开源...

    jcaptcha组件jar包

    ptcha是一个开源的用来生成图形验证码的Java开源组件,使用起来也是非常的简单方便。 jcapthca是非常强大的,不光是可以生成图片式的验证码,还可以生成声音式的(新浪就使用了双重验证码)。 Jcaptcha是CAPTCHA里面...

    在AndroidStudio中引用其他开源组件的方法.docx

    在Android开发中,引用开源组件是常见的做法,这能极大地提高开发效率,减少重复工作,并利用社区的智慧优化代码。本文主要介绍如何在Android Studio中引用其他开源组件,以Xutils为例进行详细步骤讲解。 首先,你...

    基于java的验证码生成库 JCaptcha.zip

    Java验证码生成库JCaptcha是一个广泛使用的开源项目,它为Java应用程序提供了强大的安全验证工具。验证码(Completely Automated Public Turing test to tell Computers and Humans Apart)的主要目的是防止自动化...

    JCaptcha

    **标题:“JCaptcha”** **描述:** JCaptcha(Just Another CAPTCHA)是一个开源的验证码系统,主要用于防止自动化脚本或机器人...通过深入理解和使用JCaptcha,开发者能够创建出既安全又用户体验良好的验证码系统。

    java 开源 验证码识别

    Java作为一种广泛使用的编程语言,也提供了许多开源工具和库来实现验证码识别。本文将深入探讨“java 开源 验证码识别”这一主题,结合描述中的“增加了细化算法”、“增加了注释”和“界面稍微变了变”,我们将关注...

    是Golang开源界最好用的行为验证码工具

    是Golang开源界最好用的行为验证码工具。tianai-captcha-go 目前支持的行为验证码类型。滑块验证码。旋转验证码。文字点选验证码

    Java Tree的几种开源组件

    以上这些开源组件各具特色,可以根据具体需求选择合适的一个或多个来使用。通过深入理解和熟练运用这些工具,开发者可以有效地处理和呈现树形数据,提高软件的性能和用户体验。在实际开发中,理解每个组件的核心特性...

    security+jcaptcha(验证码)+mybatis框架搭建

    Jcaptcha 是一个开源的验证码生成工具包,可以生成各种类型的验证码图片,并支持多种语言环境。它提供了一种简单的方式来实现图形验证码的功能,增强了系统的安全性。 - **安装与配置**: - 添加Jcaptcha依赖到`...

Global site tag (gtag.js) - Google Analytics