您的位置:首页 > 编程语言 > Java开发

SpringMVC中使用patchca生成验证码

2016-06-23 14:46 645 查看
一、页面直接使用img标签

二、主要代码如下:

@RequestMapping
@Controller
public class IdentifyCodeController {
private static ConfigurableCaptchaService ccs = new ConfigurableCaptchaService();
private static Random random = new SecureRandom();
static{
ccs.setColorFactory(new ColorFactory() {
@Override
public Color getColor(int n) {
int[] c = new int[3];
int i = random.nextInt(c.length);
for(int j=0;j<c.length;j++){
if(j == i){
c[j] = random.nextInt(71);
}else{
c[j] = random.nextInt(256);
}
}
return new Color(c[0], c[1], c[2]);
}
});
RandomWordFactory rwf = new RandomWordFactory();
rwf.setCharacters("23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ");
rwf.setMaxLength(4);
rwf.setMinLength(4);
ccs.setWordFactory(rwf);
}

@RequestMapping(value="/verify.html")
public void verifyCode(HttpServletRequest request,HttpServletResponse response) throws IOException{
switch(random.nextInt(5)){
case 0:
ccs.setFilterFactory(new CurvesRippleFilterFactory(ccs.getColorFactory()));
break;
case 1:
ccs.setFilterFactory(new MarbleRippleFilterFactory());
break;
case 2:
ccs.setFilterFactory(new DoubleRippleFilterFactory());
break;
case 3:
ccs.setFilterFactory(new WobbleRippleFilterFactory());
break;
case 4:
ccs.setFilterFactory(new DiffuseRippleFilterFactory());
break;
}
HttpSession session = request.getSession(false);
if(session == null){
session = request.getSession();
}
setResponseHeaders(response);
String token = EncoderHelper.getChallangeAndWriteImage(ccs, "png", response.getOutputStream());
session.setAttribute("captchaToken", token);
System.out.println("当前的SessionID=" + session.getId() + ",验证码=" + token);
}

protected void setResponseHeaders(HttpServletResponse response){
response.setContentType("image/png");
response.setHeader("Cache-Control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
long time = System.currentTimeMillis();
response.setDateHeader("Last-Modified", time);
response.setDateHeader("Date", time);
response.setDateHeader("Expires", time);
}
}


三、使用jar见附件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息