maven依赖
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
context.xml
<bean id="kaptchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<bean class="com.google.code.kaptcha.util.Config">
<constructor-arg>
<props>
<!-- 是否带边框-->
<prop key="kaptcha.border">no</prop>
<!-- 图片宽度-->
<prop key="kaptcha.image.width">120</prop>
<!-- 图片颜色-->
<prop key="kaptcha.textproducer.font.color">blue</prop>
<!-- 字体大小-->
<prop key="kaptcha.textproducer.font.size">40</prop>
<!-- 验证码字数-->
<prop key="kaptcha.textproducer.char.length">4</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
java代码
@Controller
public class KaptchaController {
@Resource private Producer producer;
@GetMapping("verify_code")
public void createVerifyCode(HttpServletRequest req, HttpServletResponse res) throws IOException {
// 禁用缓存
res.setHeader("Cache-control", "no-store,no-cahce,must-revalidate");
res.setHeader("Cache-control", "post-check=0,pre-check=0");
res.setHeader("Pragma", "no-cache");
// 禁用缓存
res.setContentType("image/png");
String verifyCode = producer.createText(); // 生成验证码文字
req.getSession().setAttribute("kaptchaVerifyCode", verifyCode);
System.out.println("验证码为:" + req.getSession().getAttribute("kaptchaVerifyCode"));
BufferedImage image = producer.createImage(verifyCode); // 生成验证码二进制图片
ServletOutputStream stream = res.getOutputStream();
ImageIO.write(image, "png", stream);
stream.flush(); // 立即输出
stream.close(); // 关闭输出流
}