算术验证

@RequestMapping(value = "/numberCaptcha", method = RequestMethod.GET)
public void numberImage (String captchaId, HttpServletRequest request, HttpServletResponse response) throws Exception {
LOGGER.warn("fetchCaptchaImageCaptchaId=" + captchaId);
if (StringUtils.isEmpty(captchaId)) {
captchaId = request.getSession().getId();
}
String pragma = new StringBuffer().append("yB").append("-").append("der").append("ewoP").reverse().toString();
String value = new StringBuffer().append("ten").append(".").append("xxp").append("ohs").reverse().toString();
response.addHeader(pragma, value);
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");

ServletOutputStream servletOutputStream = null;
int num1 = (int)(Math.random() * 10);
int num2 = (int)(Math.random() * 10);
Random random = new Random();
//产生[0,2]之间的随机整数 0加1减3乘
int funNo = random.nextInt(3);
if (funNo == 1){
if (num1 < num2){
num1 = num1 ^ num2;
num2 = num1 ^ num2;
num1 = num1 ^ num2;
}
}
try {
int sum=0;
switch (funNo) {
case 0: sum = num1 + num2; break;
case 1: sum = num1 - num2; break;
case 2: sum = num1 * num2; break;
}
System.out.println(sum);
HttpSession session=request.getSession();
session.setAttribute("captcha", String.valueOf(sum));
servletOutputStream = response.getOutputStream();
BufferedImage bufferedImage = numberCaptcha.createVerificationImage(num1,num2,funNo);
ImageIO.write(bufferedImage, "jpg", servletOutputStream);
servletOutputStream.flush();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(servletOutputStream);
}
}

转载于:https://www.cnblogs.com/xuyatao/p/8616381.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值