博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用开源项目patchca生成验证码
阅读量:4119 次
发布时间:2019-05-25

本文共 5014 字,大约阅读时间需要 16 分钟。

/** * 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. 
* * @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.
* * 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.
* * 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.
*/ public void destroy() { rwf = null; cf = null; ccs = null; ff = null; super.destroy(); // Just puts "destroy" string in log // Put your code here }}

转载地址:http://fknpi.baihongyu.com/

你可能感兴趣的文章
链睿和家乐福合作推出下一代零售业隐私保护技术
查看>>
Unifrax宣布新建SiFAB™生产线
查看>>
艾默生纪念谷轮™在空调和制冷领域的百年创新成就
查看>>
NEXO代币持有者获得20,428,359.89美元股息
查看>>
Piper Sandler为EverArc收购Perimeter Solutions提供咨询服务
查看>>
RMRK筹集600万美元,用于在Polkadot上建立先进的NFT系统标准
查看>>
JavaSE_day12 集合
查看>>
JavaSE_day14 集合中的Map集合_键值映射关系
查看>>
Day_15JavaSE 异常
查看>>
异常 Java学习Day_15
查看>>
JavaSE_day_03 方法
查看>>
day-03JavaSE_循环
查看>>
Mysql初始化的命令
查看>>
day_21_0817_Mysql
查看>>
day-22 mysql_SQL 结构化查询语言
查看>>
MySQL关键字的些许问题
查看>>
浅谈HTML
查看>>
css基础
查看>>
HTML&CSS进阶
查看>>
Servlet进阶和JSP基础
查看>>