算术验证

@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);
}
}
posted @ 2018-03-21 13:03  xuyatao  阅读(200)  评论(0编辑  收藏  举报