`
z75148885
  • 浏览: 195683 次
  • 性别: 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 彩色验证码-下载即可使用

    在这个名为“jcaptcha 彩色验证码-下载即可使用”的项目中,我们聚焦于一个特定的验证码实现:jCaptcha。jCaptcha 是一个基于 Java 的开源验证码库,它提供了丰富的图形验证码解决方案。这个库的特点在于可以创建...

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

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

    java jcaptcha 验证码 生成

    要在Java项目中使用JCaptcha,首先需要将jcaptcha相关的JAR文件添加到项目的类路径中。然后,你可以通过以下步骤集成和使用JCaptcha: - **创建CaptchaService实例**:JCaptcha的核心服务类是`CaptchaService`,...

    jcaptcha的验证码例子

    3. **在JSP页面上显示验证码**:使用`jcaptcha.tld`中的标签在表单页面上生成验证码图像。 4. **处理验证结果**:如果验证码验证失败,可以返回错误消息并重新显示验证码,或者阻止进一步的操作。 在实际开发中,你...

    java通过JCaptcha生成验证码

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

    Java验证码生成库 JCaptcha

    Java验证码生成库 JCaptcha

    墨菲安全旗下开源组件安全检测产品murphysec

    许可证合规评估:识别您代码项目中使用的开源组件许可证,检查合规的风险 软件成分分析:识别您代码和基础环境中的三方组件依赖资产,并有效管理 墨菲安全提供的 CLI 工具,可用于在命令行检测指定目录代码的依赖...

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

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

    jcaptcha写验证码要用到的jar包

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

    jsp教程JSP验证码代码

    - 在实际开发中,我们可以使用开源的验证码库,如JCaptcha、Simple CAPTCHA等,它们提供了丰富的配置选项和更好的性能。 5. **示例代码** - `jsp教程JSP验证码代码.txt` 文件可能包含了实现JSP验证码功能的Java...

    jcaptcha验证码所需jar包

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

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

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

    jcaptcha-bin-1.0-RC6.zip

    在这个例子中,它定义了如何在JSP中使用jCaptcha的标签,简化了在Web应用中嵌入验证码的步骤。 LICENSE.txt文件包含了jCaptcha的许可协议,通常为开源软件提供的MIT、Apache或GPL等许可证,这允许开发者在遵守一定...

    jcaptcha4struts2-demo-2.0.1.zip_DEMO_JCaptcha4Struts2.jar_jcaptc

    要使用Jcaptcha4Struts2,首先需要在项目中引入相关的依赖,这通常包括jcaptcha4struts2.jar文件。这个jar文件包含了Jcaptcha4Struts2插件的所有必要类和资源,包括验证码的生成、验证逻辑以及与Struts2的交互。 接...

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

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

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

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

    jspupload.rar_OCR_java ocr_jsp_jsp 验证码_验证码 识别

    【标题】"jspupload.rar_OCR_java ocr_jsp_jsp 验证码_验证码 识别" 提供了一个基于JSP和Servlet实现的OCR(Optical Character Recognition,光学字符识别)系统,主要用于处理验证码的识别。这个系统允许用户通过...

    jcaptcha组件jar包

    **Jcaptcha组件详解** Jcaptcha,全称Java CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart),...正确地集成和使用Jcaptcha,能够有效地抵御自动化攻击,保护网站的正常运营。

    java源码:Java验证码生成库 JCaptcha.rar

    3. 创建验证码:在需要生成验证码的控制器方法中,使用JCaptcha的API创建并返回验证码图像。 4. 存储验证码:将生成的验证码字符串存储在session或cookie中,以便后续验证。 5. 验证用户输入:在用户提交表单时,...

    IT软件项目开源组件清单(JAVA).zip

    "IT软件项目开源组件清单(JAVA)"是一个重要的资源集合,旨在帮助项目团队跟踪和管理他们在JAVA项目中使用的开源组件及其版本信息。这份清单的主要目标是确保系统的安全性,及时发现并修复可能存在的安全漏洞。 首先...

Global site tag (gtag.js) - Google Analytics