java验证码Kaptcha

一、最新的maven源

com.github.penggle kaptcha 2.3.2 二、Kaptcha 详细配置表

Constant 描述 默认值
kaptcha.border 图片边框,合法值:yes , no yes
kaptcha.border.color 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. black
kaptcha.border.thickness 边框厚度,合法值:>0 1
kaptcha.image.width 图片宽 200
kaptcha.image.height 图片高 50
kaptcha.producer.impl 图片实现类 com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl 文本实现类 com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string 文本集合,验证码值从此集合中获取 abcde2345678gfynmnpwx
kaptcha.textproducer.char.length 验证码长度 5
kaptcha.textproducer.font.names 字体 Arial, Courier
kaptcha.textproducer.font.size 字体大小 40px
kaptcha.textproducer.font.color 字体颜色,合法值: r,g,b 或者 white,black,blue. black
kaptcha.textproducer.char.space 文字间隔 2
kaptcha.noise.impl 干扰实现类 com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color 干扰颜色,合法值: r,g,b 或者 white,black,blue. black
kaptcha.obscurificator.impl 图片样式:
水纹com.google.code.kaptcha.impl.WaterRipple
鱼眼com.google.code.kaptcha.impl.FishEyeGimpy
阴影com.google.code.kaptcha.impl.ShadowGimpy com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl 背景实现类 com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from 背景颜色渐变,开始颜色 light grey
kaptcha.background.clear.to 背景颜色渐变,结束颜色 white
kaptcha.word.impl 文字渲染器 com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key session key KAPTCHA_SESSION_KEY
kaptcha.session.date session date KAPTCHA_SESSION_DATE

三、使用示例:

需要编写两个类1个配置类和一个Controller

代码如下:

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Properties;

/**

  • KaptchaConfig
    /
    @Configuration
    public class KaptchaConfig{
    /
    *
    • 验证码 生成的bean
      */
      @Bean
      public DefaultKaptcha captchaProducer() {
      DefaultKaptcha captchaProducer = new DefaultKaptcha();
      Properties properties = new Properties();
      properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, “100”);
      properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, “30”);
      properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, “22”);
      properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, “4”);
      properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, “6”);
      properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, “black”);
      properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, “LIGHT_GRAY”);
      properties.setProperty(Constants.KAPTCHA_BACKGROUND_CLR_FROM, “WHITE”);
      properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, “com.google.code.kaptcha.impl.NoNoise”);
      properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, “com.google.code.kaptcha.impl.ShadowGimpy”);
      properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, “0123456789”);
      properties.setProperty(Constants.KAPTCHA_SESSION_CONFIG_KEY, “checkCode”);
      Config config = new Config(properties);
      captchaProducer.setConfig(config);
      return captchaProducer;
      }

}

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
//http://localhost:3721/mapserver_war_exploded/kaptcha/getCode
@Controller
@RequestMapping("/kaptcha")
public class KaptchaController {
@Autowired
private Producer captchaProducer;

@RequestMapping("/getCode")
public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
    response.setDateHeader("Expires", 0);
    // Set standard HTTP/1.1 no-cache headers.
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
    response.addHeader("Cache-Control", "post-check=0, pre-check=0");
    // Set standard HTTP/1.0 no-cache header.
    response.setHeader("Pragma", "no-cache");
    response.setContentType("image/jpeg");
    // create the text for the image
    String capText = captchaProducer.createText();
    // store the text in the session
    request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
    // create the image with the text
    BufferedImage bi = captchaProducer.createImage(capText);
    ServletOutputStream out = response.getOutputStream();
    // write the data out
    ImageIO.write(bi, "jpg", out);
    try {
        out.flush();
    } finally {
        out.close();
    }
    return null;
}

}