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

使用开源项目patchca生成验证码

 
阅读更多
/**
 * Copyright(C) 2012.
 *
 * 模块名称:	登录模块
 * 子模块名称:	验证码模块
 *
 * 备注:
 *
 * 修改历史:
*/
package cn.edu.hbcit.smms.servlet.loginservlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.awt.Color;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.patchca.color.ColorFactory;
import org.patchca.color.SingleColorFactory;
import org.patchca.filter.predefined.CurvesRippleFilterFactory;
import org.patchca.filter.predefined.DiffuseRippleFilterFactory;
import org.patchca.filter.predefined.DoubleRippleFilterFactory;
import org.patchca.filter.predefined.MarbleRippleFilterFactory;
import org.patchca.filter.predefined.WobbleRippleFilterFactory;
import org.patchca.font.FontFactory;
import org.patchca.font.RandomFontFactory;
import org.patchca.service.ConfigurableCaptchaService;
import org.patchca.text.renderer.BestFitTextRenderer;
import org.patchca.text.renderer.RandomYBestFitTextRenderer;
import org.patchca.text.renderer.SimpleTextRenderer;
import org.patchca.text.renderer.TextRenderer;
import org.patchca.utils.encoder.EncoderHelper;
import org.patchca.word.RandomWordFactory;
/**
 * 验证码生成类
 *
 * 本类的简要描述:
 * 使用开源验证码项目patchca生成
 * jar包:patchca-0.5.0.jar
 * 项目网址:https://code.google.com/p/patchca/
 * 项目中文介绍:http://baike.baidu.com/view/6925997.htm?fromTaglist
 *
 * @author liwei5946@gmail.com
 * @version 1.00  2012-6-7 新建类
 */

public class VerifyCodeServlet extends HttpServlet {
	private static final long serialVersionUID = 3796351198097771007L; 
	private static ConfigurableCaptchaService ccs = null;
	private static ColorFactory cf = null;
	private static TextRenderer tr = null;
	private static RandomFontFactory ff = null;
	private static RandomWordFactory rwf = null;
	private static Random r = new Random();
	//private static CurvesRippleFilterFactory crff = null;  //干扰线波纹
	//private static MarbleRippleFilterFactory mrff = null;  //大理石波纹
	//private static DoubleRippleFilterFactory drff = null;  //双波纹
	private static WobbleRippleFilterFactory wrff = null;   //摆波纹
	//private static DiffuseRippleFilterFactory dirff = null;  //漫波纹

	/**
	 * Constructor of the object.
	 */
	public VerifyCodeServlet() {
		super();
	}
	
	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
		super.init();
		ccs = new ConfigurableCaptchaService();
		cf = new SingleColorFactory(new Color(25, 60, 170));
		ff = new RandomFontFactory();
		rwf = new RandomWordFactory();
		tr = new BestFitTextRenderer();
		//crff = new CurvesRippleFilterFactory(ccs.getColorFactory());
		//drff = new DoubleRippleFilterFactory();
		wrff = new WobbleRippleFilterFactory();
		//dirff = new DiffuseRippleFilterFactory();
		//mrff = new MarbleRippleFilterFactory();
		rwf.setCharacters("123456789");
		ff.setRandomStyle(false);
		ff.setMaxSize(16);
		ff.setMinSize(12);
		ccs.setTextRenderer(tr);
		ccs.setFontFactory(ff);
		ccs.setWordFactory(rwf);
		ccs.setColorFactory(cf);
		ccs.setWidth(50);
		ccs.setHeight(20);
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("image/png");
		response.setHeader("cache", "no-cache");
		rwf.setMaxLength(4);
		rwf.setMinLength(4);
		HttpSession session = request.getSession(true);
		OutputStream os = response.getOutputStream();
		ccs.setFilterFactory(wrff);
		/*switch (r.nextInt(5)) {
		case 0:
			ccs.setFilterFactory(drff);
			break;
		case 1:
			ccs.setFilterFactory(mrff);
			break;
		case 2:
			ccs.setFilterFactory(drff);
			break;
		case 3:
			ccs.setFilterFactory(wrff);
			break;
		case 4:
			ccs.setFilterFactory(dirff);
			break;
		}*/
		String captcha = EncoderHelper.getChallangeAndWriteImage(ccs, "png", os);
		session.setAttribute("captcha", captcha);
		os.flush();
		os.close();
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}
	
	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		rwf = null;
		cf = null;
		ccs = null;
		ff = null;
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

}


分享到:
评论

相关推荐

    google的Kaptcha生成验证码

    谷歌的Kaptcha是一款广泛应用于网站安全验证的开源项目,它为用户提供了一种高效且可定制的验证码生成器。验证码的主要目的是防止自动化的机器人或者恶意软件进行非法操作,例如批量注册、垃圾评论等。Kaptcha因其...

    struts2 生成验证码

    本文将详细介绍如何在Struts2项目中生成并显示验证码。 #### 二、核心概念 1. **验证码**:一种用于区分用户是人还是计算机程序的技术手段。 2. **Struts2**:一个开源的Java EE框架,用于构建企业级Web应用程序。 ...

    用OpenCV可以生成验证码

    在本场景中,我们将探讨如何使用OpenCV库来生成验证码,这是一个强大的计算机视觉库,常用于图像处理和分析任务。OpenCV的强大功能使得我们可以自定义验证码的多个属性,如字体大小、颜色、位置等,从而创建多样化的...

    java通过JCaptcha生成验证码

    2. **创建验证码生成器**:使用 JCaptcha 提供的 `DefaultCaptchaService` 类,这是验证码服务的默认实现,可以生成包含文本和图像的验证码。初始化时,你可以设置干扰线的数量、颜色、形状等参数。 3. **自定义...

    java jcaptcha 验证码 生成

    在Java开发中,JCaptcha是一个广泛使用的开源库,它提供了一种简单且灵活的方式来生成和验证这种人机验证图像。 1. **什么是JCaptcha?** JCaptcha,全称为Java CAPTCHA,是由Greg Wilkins创建的一个强大的验证码...

    dotnet-HeiCaptcha一个netcore跨平台的图形验证码生成工具包

    **标题与描述解析** 标题中的"dotnet-HeiCaptcha"是一个专为.NET Core设计的图形验证码生成库,强调了其跨平台的特性。...同时,这个开源项目也为.NET开发者提供了一个学习图像处理和验证码生成技术的实例。

    优秀开源项目(基于VC++和MFC)(基于VC++和MFC的一些优秀开源项目)

    基于VC++和MFC的一些优秀开源项目列表 包括7-Zip,eMule,FileZilla,MiKTeX,Nokia Composer等优秀项目,有兴趣的同行可以参考参考。

    谷歌验证码使用工具——kaptcha-2.3.2

    【谷歌验证码使用工具——kaptcha-2.3.2】是一款基于Java的开源验证码生成库,主要用于网站的身份验证,防止自动化的机器人或者恶意攻击者进行非法操作。kaptcha这个名字是"CAPTCHA"(Completely Automated Public ...

    java验证码生成验证

    csdn上三种java验证码生成方法,以及谷歌开源验证码,总共四种验证码生成集合。将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 ...

    蓝湖移动端辅助工具开源项目下载

    蓝湖移动端辅助工具是一款专为开发者设计的开源项目,旨在简化移动端开发过程中控件属性的复制和粘贴操作。此工具的最新版本为v1.0.2,它能够极大地提高开发效率,尤其是在处理iOS和Android平台上的布局时。通过一键...

    Java验证码生成库 JCaptcha

    Java验证码生成库 JCaptcha

    Captcha asp.net生成验证码的源代码

    在项目中,`visualCaptcha-aspnet-master`可能是一个开源库,它提供了一种更高级的Captcha实现,可能包括更多的图像样式、可配置性以及语音验证码支持。你可以研究其源代码,学习并理解其工作原理,以便在自己的项目...

    数字人开源项目,旨在实现实时、互动的数字人流媒体传输,可做毕业设计

    数字人开源项目,旨在实现实时、互动的数字人流媒体传输,可做毕业设计。该技术允许用户创建高度逼真的虚拟人(MetaHuman),并使其能够进行实时交互,适用于虚拟现实、电子游戏以及直播等场景。这个系统支持多种...

    java实现10以内的加减乘验证码

    本项目“java实现10以内的加减乘验证码”是一个基于MyEclipse的Web应用,设计用于生成包含10以内数字的加减乘算术问题作为验证码。这样的验证码增加了破解的难度,因为机器人需要解决数学问题,而不仅仅是识别图像。...

    Java项目开源源码,共111个

    * 使用docx库来生成Word文档。 * 使用selenium库来实现浏览器自动化操作。 Java项目应用场景 这些Java项目源码可以应用于多种场景,例如: * web爬虫:使用这些源码可以爬取指定网页的内容。 * 数据采集:使用...

    JAVA基于JCaptcha生成验证码图片传给前端

    在Java中,我们可以使用开源库JCaptcha来生成验证码图片,并将其传递给前端以供用户验证。下面将详细介绍如何实现这一过程。 首先,JCaptcha是一个Java CAPTCHA(Completely Automated Public Turing test to tell ...

    captcha:一个好用的开源验证码项目,项目包括字符验证码,运算验证码以及滑动验证码功能的集成

    项目集成字符验证码,运算验证码,滑动验证码具有代码简洁,注释完备,配置灵活,易于上手的特点,适合所有开发者集成 功能 字符验证码 运算验证码 滑动验证码 快速访问 快速访问: 字符验证码: 运算验证码: 滑动...

    Java最著名的开源项目

    在Java的生态系统中,存在诸多著名的开源项目,这些项目各有特色,为Java开发人员提供了丰富的开发工具和应用架构。以下是对一些Java著名开源项目的详细介绍,它们分别在不同的开发领域中扮演着重要角色。 首先,...

    GitHub开源项目SlidingMenu类库

    GitHub开源项目SlidingMenu的类库,导入之后可以直接使用 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9255829

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

    kaptcha验证码生成jar包后台配置源代码 ...1、Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。 2、过Kaptcha可阻拦大多数机器人脚本操作。 3、kaptcha典型殷用于注册、登录、重要信息提交等用户交互

Global site tag (gtag.js) - Google Analytics