RT,简单在于不用自己渲染。
环境:Spring Boot 2.x 、Maven 3.6.x
三方jar :Hutool
引用Hutool > 验证码生成,对比其ref
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.ICaptcha;
import cn.hutool.captcha.LineCaptcha;
public class VerifyCodeGen {
public static ICaptcha codeGen(int width,int height,int codeCount,int lineCount){
// 验证码字符个数由${project.codeCount}指定
LineCaptcha captcha = CaptchaUtil.createLineCaptcha(width, height, codeCount, lineCount);
return captcha;
}
}
Controller
@GetMapping(path = "/verifyCode")
public void loadVerifyCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 生成验证码对象, 字符个数由配置文件控制
ICaptcha captcha = VerifyCodeGen.codeGen(100, 50, this.codeCount, 100);
// 获取验证码设置session
String code = captcha.getCode();
HttpSession session = request.getSession();
session.setAttribute("verifyCode", code);
session.setMaxInactiveInterval(3 * 60);
// 写出验证码到输出流,前端即可得到该验证码图
response.setContentType(MimeTypeUtils.IMAGE_PNG_VALUE);
ServletOutputStream os = response.getOutputStream();
captcha.write(os);
os.flush();
os.close();
}
测试: 不建议swagger,全是乱码。
Thymeleaf 模板:
<img id="imgVerifyCode" th:src="@{/meeting/verifyCode}" width="100" height="50">
效果:
小结:只是利用三方实现,其中奥妙可按需探究。