开源验证码captcha引入方案

本文介绍了在B/S项目中引入开源验证码库Patcha的方案,该验证码库兼容IE7及以上版本,接入简便,且具有良好的安全性和响应速度。通过Servlet和Struts框架的示例代码,展示了如何在项目中实现验证码功能,并强调了其在低版本浏览器的兼容性优势。
摘要由CSDN通过智能技术生成

通常来说一个B/S项目基本都会用到验证码,用于用户登录或注册,以此提高项目的安全性,而目前仍存在一些网站的应用环境比较特殊,使用人群分部较广,所以需要考虑ie浏浏览器的兼容性,众所周知,ie一代比一代坑,9以下和9以上差异非常大,第三方验证码都很少有兼容ie9以下的。然而由于国情的特殊,仍然有一大部分人在使用ie8甚至更低版本的浏览器。所以我用了patcha,这是一款兼容ie7以上所有版本 (7以下没做测试)的验证码jar包,接入非常方便,效果也不错。
首先,servlet中的代码

package org.captcha.servlet;

import java.awt.Color;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
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.service.ConfigurableCaptchaService;
import org.patchca.utils.encoder.EncoderHelper;
import org.patchca.word.RandomWordFactory;
public class CaptchaServlet extends HttpServlet {
   
private static final long serialVersionUID = 4968328161261528097L;
private static ConfigurableCaptchaService cs = null;
private static ColorFactory cf = null;
private static RandomWordFactory wf = 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;
/**验证码字符串长度,默认4*/
private static Integer randomCodeLength=4;
/**验证码图片宽度,默认120*/
private static  Integer randomCodeWidth=120;
/**验证码图片高度,默认50*/
private static Integer randomCodeHight=50;
/**验证码样式
 * 1 弯曲状
 * 2 摇摆装
 * 3 摇晃
 * 4 散开
 * 5 大理石
 * 6 随机(默认)
 * */
private static Integer randomCodeType=6;

/**验证码session中Attribute的Name*/
private static String randomCodeSessionAttributeName="PATCHCA";

@Override
public void init() throws ServletException {
    super.init();
    cs = new ConfigurableCaptchaService();
    cf = new SingleColorFactory(new Color(25, 60, 170));
    wf = new RandomWordFactory();
    crff = new CurvesRippleFilterFactory(cs.getColorFactory());
    drff = new DoubleRippleFilterFactory();
    wrff = new WobbleRippleFilterFactory();
    dirff = new DiffuseRippleFilterFactory();
    mrff = new MarbleRippleFilterFactory();
    cs.setWordFactory(wf);
    cs.setColorFactory(cf);
    cs.setWidth(randomCodeWidth);
    cs.setHeight(randomCodeHight);

    randomCodeLength=Integer.valueOf(null==this.getInitParameter("randomCodeLength")?"4":this.getInitParameter("randomCodeLength"));
    randomCodeWidth=Integer.valueOf(null==this.getInitParameter("randomCodeWid
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值