package com.app.mvc.captcha;
import com.google.common.base.Throwables;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by jimin on 16/3/9.
*/
@Slf4j
@Controller
public class CaptchaController {
@Resource
private CaptchaService captchaService;
@RequestMapping("/captcha")
public void generate(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 设置响应的类型格式为图片格式
response.setContentType("image/jpeg");
//禁止图像缓存。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
Captcha captcha = new Captcha(120, 40, 5, 30);
String sessionId = request.getSession().getId();
try {
captchaService.saveCaptchaCode(captcha.getCode(), sessionId);
} catch (Throwable t) {
log.error("保存验证码出错, 不影响生成的验证码, 但本次验证也会出错, code:{}, sessionId:{}", captcha.getCode(), sessionId, t);
}
try {
captcha.write(response.getOutputStream());
} catch (Throwable t) {
log.error("验证码返回出现异常, code:{}, sessionId:{}", captcha.getCode(), sessionId, t);
throw Throwables.propagate(t);
}
}
}