算术验证码&字母验证码
/**
* 生成验证码图片并返回给客户端
* @param key 验证码对应的key
* @param request HTTP请求对象
* @param response HTTP响应对象
* @throws Exception 异常处理
*/
@RequestMapping("/captcha")
public void captcha(@RequestParam String key, HttpServletRequest request, HttpServletResponse response) throws Exception {
// 指定验证码的长宽以及字符的个数
// SpecCaptcha captcha = new SpecCaptcha(135, 33, 5);
// captcha.setCharType(Captcha.TYPE_NUM_AND_UPPER);
// // 首先把验证码在后台保存一份,但是不能保存在session,可以存在redis,也可以存在后台的某个Map里面
// CaptureConfig.CAPTURE_MAP.put(key, captcha.text().toLowerCase());
// CaptchaUtil.out(captcha, request, response);
// 算术类型
ArithmeticCaptcha captcha = new ArithmeticCaptcha(135, 33);
captcha.setLen(4); // 几位数运算,默认是两位
captcha.getArithmeticString(); // 获取运算的公式:3+2=?
captcha.text(); // 获取运算的结果:5
// 将验证码文本转换为小写,并将其与对应的key存储在CAPTURE_MAP中
CaptureConfig.CAPTURE_MAP.put(key, captcha.text().toLowerCase());
// 将生成的验证码图片输出到客户端
CaptchaUtil.out(captcha, request, response);
}