/**
* 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
}
}
分享到:
相关推荐
利用java开源组件及servlet实现生成验证码
开源ML代码生成器开源ML代码生成器开源ML代码生成器 可以生成ML代码,非常方便,只需要连接上数据库 开源ML代码生成器开源ML代码生成器开源ML代码生成器开源ML代码生成器
C#开源项目信息汇总
本软件采用神经网络技术进行验证码识别。 软件具备学习能力。 工作目录下有图片样本。 需jdk1.6 使用eclipes开发。有个jar 包提示说没有 请自己在工作目录下找找再添加上去。 细化算法加上去估计效果会更好 ,懒得写...
基于VC++和MFC的一些优秀开源项目列表 包括7-Zip,eMule,FileZilla,MiKTeX,Nokia Composer等优秀项目,有兴趣的同行可以参考参考。
csdn上三种java验证码生成方法,以及谷歌开源验证码,总共四种验证码生成集合。将生成的四个验证图片放在一个页面上以供比对,全部可以运行。 四种方法分别为: 1. 数字、字母、汉字混合验证码,叠影(给力)、扭曲 ...
Java验证码生成库 JCaptcha
Java最著名的开源项目,开源项目介绍,简单的介绍,开拓视野。
kaptcha-2.3.2.jar kaptcha-2.3.2-javadoc.jar ...1.Kaptcha是谷歌开源的可高度配置的实用验证码生成工具。 2.通过Kaptcha可阻拦大多数机器人脚本操作。 3.kaptcha典型殷勇于注册、登录、重要信息提交等用户交互
项目集成字符验证码,运算验证码,滑动验证码具有代码简洁,注释完备,配置灵活,易于上手的特点,适合所有开发者集成 功能 字符验证码 运算验证码 滑动验证码 快速访问 快速访问: 字符验证码: 运算验证码: 滑动...
GitHub开源项目SlidingMenu的类库,导入之后可以直接使用 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9255829
芯片开发开源寄存器工具 使用python生成寄存器
携程开源DAL框架 Ctrip DAL支持流行的分库分表操作,支持Java和C#,支持Mysql和MS SqlServer。使用该框架可以在有效地保护企业已有数据库投资的同时,迅速,可靠的为企业提供数据库访问层的横向扩展能力。整个框架...
Python爬虫开源项目代码分享(23个Py爬虫开源项目等)
5个好玩的github游戏区开源项目,包含c++,java,javascript,rust。
方便快捷简单的开源获取验证码jar包
开源 macOS 截屏生成 Gif 工具。.zip,适用于MacOS的GIF捕获应用程序
PC远程登录手机 登录之后,必然涉及到按键的模拟等操作。 三个开源的软件一个是SmartDog Studio的Remote Control Add-on 另一个是Webkey 最后一个是Android自带monkey
主要介绍了使用开源工具制作网页验证码的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
code-gen代码生成工具 v1.6.1 dynamic datasource 多数据源启动器 v3.6.0 mica 微服务开发工具 v3.0.1 fastcms建站系统 v0.0.9 Apache Maven项目构建工具 v3.8.7 HertzBeat 赫兹跳动 v1.2.3 Jpom项目监控软件 v...