gpt4 book ai didi

jfinal添加jcaptcha验证码实现方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章jfinal添加jcaptcha验证码实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

代码如下

package com.g.core.common.JCaptcha,

  。

import java.awt.Color; import java.awt.Font,

import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator; import com.octo.captcha.component.image.backgroundgenerator.FileReaderRandomBackgroundGenerator; import com.octo.captcha.component.image.color.RandomListColorGenerator; import com.octo.captcha.component.image.fontgenerator.FontGenerator; import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator; import com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster; import com.octo.captcha.component.image.textpaster.TextPaster; import com.octo.captcha.component.image.textpaster.textdecorator.TextDecorator; import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage; import com.octo.captcha.component.image.wordtoimage.WordToImage; import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator; import com.octo.captcha.component.word.wordgenerator.WordGenerator; import com.octo.captcha.engine.image.ListImageCaptchaEngine; import com.octo.captcha.image.gimpy.GimpyFactory,

/**  * 生成验证码图片  */ 。

public class JCaptchaEngine extends ListImageCaptchaEngine { 。

 public static final String IMAGE_CAPTCHA_KEY = "imageCaptcha";// ImageCaptcha对象存放在Session中的key  public static final String CAPTCHA_INPUT_NAME = "j_captcha";// 验证码输入表单名称  public static final String CAPTCHA_IMAGE_URL = "/captcha.jpg";// 验证码图片URL  private static final Integer MIN_WORD_LENGTH = 4;// 验证码最小长度  private static final Integer MAX_WORD_LENGTH = 4;// 验证码最大长度  private static final Integer IMAGE_HEIGHT = 28;// 验证码图片高度  private static final Integer IMAGE_WIDTH = 80;// 验证码图片宽度  private static final Integer MIN_FONT_SIZE = 16;// 验证码最小字体  private static final Integer MAX_FONT_SIZE = 16;// 验证码最大字体  private static final String RANDOM_WORD = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";// 随机字符  private static final String IMAGE_PATH = "./captcha/";// 随机背景图片路径  // 验证码随机字体  private static final Font[] RANDOM_FONT = new Font[] {     new Font("nyala", Font.BOLD, MIN_FONT_SIZE),     new Font("Arial", Font.BOLD, MIN_FONT_SIZE),    new Font("Bell MT", Font.BOLD, MIN_FONT_SIZE),     new Font("Credit valley", Font.BOLD, MIN_FONT_SIZE),    new Font("Impact", Font.BOLD, MIN_FONT_SIZE)   },

 // 验证码随机颜色  private static final Color[] RANDOM_COLOR = new Color[] {     new Color(255, 255, 255),     new Color(255, 220, 220),     new Color(220, 255, 255),     new Color(220, 220, 255),    new Color(255, 255, 220),     new Color(220, 255, 220)   },

 // 生成验证码  @Override  protected void buildInitialFactories() { 。

  RandomListColorGenerator randomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR),

  BackgroundGenerator backgroundGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH),

  WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD),

  FontGenerator fontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT),

  TextDecorator[] textDecorator = new TextDecorator[] {},

  TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, randomListColorGenerator, textDecorator),

  WordToImage wordToImage = new ComposedWordToImage(fontGenerator, backgroundGenerator, textPaster),

  addFactory(new GimpyFactory(wordGenerator, wordToImage));  } 。

} 。

  。

  。

复制代码代码如下

package com.g.core.common.JCaptcha,

  。

import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore; import com.octo.captcha.service.image.DefaultManageableImageCaptchaService; import com.octo.captcha.service.image.ImageCaptchaService,

public class CaptchaServiceSingleton { 。

 private static  ImageCaptchaService  instance =null,

 public CaptchaServiceSingleton() {  } 。

 // 使用synchronized关键字解决线程不安全  public synchronized static ImageCaptchaService getInstance() {   if (instance == null) {    instance = new DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new JCaptchaEngine(), 180,                    100000 , 75000);    }   return instance;  } 。

} 。

  。

  。

复制代码代码如下

package com.g.core.render,

  。

import java.awt.image.BufferedImage; import java.io.IOException,

import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream,

import com.g.core.common.JCaptcha.CaptchaServiceSingleton; import com.jfinal.kit.StringKit; import com.jfinal.render.Render,

public class JCaptchaRender extends Render { 。

 private String randomCodeKey;  public JCaptchaRender(String randomCodeKey) {   if (StringKit.isBlank(randomCodeKey))    throw new IllegalArgumentException("randomCodeKey can not be blank");   this.randomCodeKey = randomCodeKey;  }  @Override  public void render() {   response.setHeader("Cache-Control", "no-store");   response.setHeader("Pragma", "no-cache");   response.setDateHeader("Expires", 0);   response.setContentType("image/jpeg");   ServletOutputStream sos = null;   try {    sos = response.getOutputStream(); //   String captchaId = request.getSession(true).getId();    BufferedImage challenge = (BufferedImage) CaptchaServiceSingleton.getInstance().getChallengeForID(randomCodeKey, request.getLocale());    ImageIO.write(challenge, "jpg", sos);    sos.flush();   } catch (Exception e) {    throw new RuntimeException(e);   }   finally {    if (sos != null)     try {sos.close();} catch (IOException e) {e.printStackTrace();}   }  } 。

} 。

  。

  。

复制代码代码如下

public void random_code() {      render(new JCaptchaRender(getSession().getId()));  } 。

最后此篇关于jfinal添加jcaptcha验证码实现方法的文章就讲到这里了,如果你想了解更多关于jfinal添加jcaptcha验证码实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com