jfinal + Patchca 验证码实现

来源:互联网 发布:淘宝良心男装店铺 编辑:程序博客网 时间:2024/05/16 05:01

下载 captcha 包
</pre><pre name="code" class="java">public class RegistController  extends Controller {  @ClearInterceptor(ClearLayer.ALL)  public void authImg() {    render(new PatchcaRender());  }}

/** * * @author* 功能: 验证码图片渲染* 版本:1* 修改日期:2014-06-27* 说明: * */public class PatchcaRender extends Render{@Overridepublic void render() {MyCaptchaService cs = new MyCaptchaService();response.setContentType(Resource.HttpHead.ImagePng);response.setHeader(Resource.HttpHead.Key_Cache,Resource.HttpHead.Key_Cache_Value);HttpSession session = request.getSession(true);try {OutputStream os = response.getOutputStream();String patchca= EncoderHelper.getChallangeAndWriteImage(cs, "png", os);//写入验证码到sessionsession.setAttribute(Resource.Patchca.SessionKey, patchca);os.flush();os.close();} catch (IOException e) {e.printStackTrace();}finally{}}  public static boolean validCheckCode(Controller c,String validCode){    String validCodeSession = c.getSessionAttr(Resource.Patchca.SessionKey);    if (validCodeSession == null || !validCodeSession.equals(validCode)) {      return false;    } else {      return true;    }      }}


/** 验证码相关常量 **/  public class Patchca {    public static final String SessionKey = "PATCHCA";    public static final String FormKey = "captcha";  }    /** http 请求头相关常量 **/  public class HttpHead {    public static final String ImagePng = "image/png";    public static final String ImageJPEG = "image/jpeg";    public static final String Key_Cache = "cache";    public static final String Key_Cache_Value = "no-cache";  }

/** * * @author * 功能: 验证码服务* 版本:1* 修改日期:2014-06-27* 说明: * */public class MyCaptchaService extends AbstractCaptchaService {public MyCaptchaService() {//文本内容wordFactory = new MyWordFactory();//字体List<String> fonts = new ArrayList<String>();fonts.add("Verdana");fonts.add("Tahoma");fontFactory = new RandomFontFactory(20,fonts);//效果textRenderer = new BestFitTextRenderer();//背景backgroundFactory = new SingleColorBackgroundFactory();//字体颜色colorFactory = new SingleColorFactory(new Color(25, 60, 170));//样式(曲线波纹加干扰线)filterFactory = new WobbleRippleFilterFactory ();//图片长宽width = 119;height = 35;}}


/** * * @author * 功能: 验证码文字生成工厂* 版本:1* 修改日期:2014-06-27* 说明: * */public class MyWordFactory extends RandomWordFactory {public MyWordFactory() {   //规定验证码出现的文字   characters = "0123456789";   minLength = 4;   maxLength = 3; }}


0 0
原创粉丝点击