java书写验证码
1.引用依赖 hutool
1.引用依赖 hutool
cn.hutool
hutool-all
5.0.3
2.hutool工具类图形验证码(Hutool-captcha)
package com.quan.crud.controller.user;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.captcha.generator.RandomGenerator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
Logger logger = LoggerFactory.getLogger(UserController.class);
@RequestMapping("getLogin")
public String getLogin(){
return "/user/login";
}
@RequestMapping("/getvcode")
@ResponseBody
public Object getVcode(HttpServletRequest request){
//获取session
HttpSession session = request.getSession();
// 自定义纯数字的验证码(随机4位数字,可重复)
RandomGenerator randomGenerator = new RandomGenerator("0123456789", 4);
LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
lineCaptcha.setGenerator(randomGenerator);
// 重新生成code
lineCaptcha.createCode();
// System.out.println("vcode为"+lineCaptcha.getCode());
logger.info("vcode为"+lineCaptcha.getCode());
session.setAttribute("vcode",lineCaptcha.getCode());
return lineCaptcha.getImageBytes();
}
}
3.html端(使用thymeleaf)
οnclick=``"this.src=this.src+'?'"
这是表示当前图片链接 在当前链接值的基础上添加了一个问号
譬如当前src="check.aspx",点击后就变成了"check.aspx?",继续点就会变成
"check.aspx?????"
......
这个问号是没有实际意义的,它唯一的作用是向IE表明: 图片链接发生了变化,图片需要刷新.