第一步:在Pom文件中引入插件
com.github.penggle
kaptcha
2.3.2
第二步:application中配置
no
120
blue
40
4
第三步:创建全新的Controller
package com.imooc.reader.controller;
import com.google.code.kaptcha.Producer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
@Controller
public class KaptchaController {
// kaptchaProducer 为配置文件中的 benId
@Resource
private Producer kaptchaProducer;
//生成验证码图片
@GetMapping("verify_code")
public void creatVerifyCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
//响应立即过期
response.setDateHeader("Expires",0);
//不缓存任何图片数据
response.setHeader("Cache-Control","no-store,no-cache,must-revalidate");
//为了浏览器的兼容性
response.setHeader("cache-Control","post-check=0,pre-check=0");
response.setHeader("Pragma","no-cache");
//返回的内容类型 为图片格式
response.setContentType("image/png");
//生成验证码字符文本
String verifyCode = kaptchaProducer.createText();
//将验证码存入当前的会话当中
request.getSession().setAttribute("kaptchaVerifyCode",verifyCode);
System.out.println(request.getSession().getAttribute("kaptchaVerifyCode"));
//CreatImage用于创建验证码图片
BufferedImage image = kaptchaProducer.createImage(verifyCode);
//图片为二进制所以使用outPutStream
ServletOutputStream out = response.getOutputStream();
//将图片从服务器通过响应发送到客户端浏览器,客户端浏览器收到图片数据为png格式的图片,就当作图片进行展示
ImageIO.write(image,"png",out);
out.flush();
out.close();
}
}