【项目技术点|spring boot项目中验证码功能实现】写spring boot项目登录功能是,验证码功能肯定是不能少的,这里将介绍一个工具来生成二维码,kaptcha
Kaptcha使用步骤
-
- 导入jar包
- 编写Kaptcha配置类
- 生成随机字符串和验证码图片
导入jar包
com.github.penggle
kaptcha
2.3.2
编写Kaptcha配置类
- 首先在配置类包下编写Kaptcha配置类
@Configuration
public class KapthchaConfig {
@Bean
public Producer kaptchaProducer(){
//用于设置验证码具体细节
Properties properties = new Properties();
//设置验证码图片宽度
properties.setProperty("kaptcha.image.width", "100");
//设置验证码图片高度
properties.setProperty("kaptcha.image.height", "40");
//设置验证码文字大小
properties.setProperty("kaptcha.textproducer.font.size", "32");
//设置验证码图片颜色
properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
//设置验证码文字内容
properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZ");
//设置生成随机字符数量
properties.setProperty("kaptcha.textproducer.char.length", "4");
//图片干扰设置
properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
//Kaptcha实现类
DefaultKaptcha kaptcha = new DefaultKaptcha();
//将properties配置封装到Config对象中
Config config = new Config(properties);
//将config传入实现类
kaptcha.setConfig(config);
return kaptcha;
}
}
生成随机字符串和验证码图片
- 配置类写完后就可以直接使用生成验证码了,核心是两个方法,createText()和createImage(String text) ,前者是随机生成验证码字符串,后者是将前者生成的字符串对象作为参数生成验证码图片,最后将图片通过输出流和imageIO写回浏览器即可
Controller层
@Controller
public class KaptController {
//注入生成验证码所需要的Producer对象
@Autowired
private Producer kaptcha;
/**
* 获取验证码
*/
@RequestMapping("/kaptcha")
public void getKpthcha(HttpServletResponse response, HttpSession session){
//生成验证码内容
String text = kaptcha.createText();
//生成验证码图片
BufferedImage image = kaptcha.createImage(text);
//将文字保存进session中
session.setAttribute("code",text);
//将图片写回流中,输出给浏览器
response.setContentType("image/png");
try {
ServletOutputStream os = response.getOutputStream();
ImageIO.write(image,"png",os);
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 浏览器请求该方法的结果
文章图片
到这里,Kaptcha的简单使用就介绍完毕了。
推荐阅读
- spring|SpringSecurity实现验证码功能
- java|含文档+PPT+源码等]精品微信小程序校园第二课堂+后台管理系统|前后分离VUE[包运行成功]计算机毕业设计项目源码Java毕设项目
- 资讯|JSON 之父(“让 JavaScript 退休,是对它最好的事情!”)
- 编程语言|2020 ,6 种不死的编程语言!
- JUC并发编程|《JUC并发编程 - 高级篇》06 - 共享模型之不可变(不可变类的设计 | 不可变类的使用 | 享元模式)
- 牛客网|【Java刷题进阶】基础入门篇③
- 牛客网|【Java刷题进阶】基础入门篇④
- spingboot|ssm+vue+elementUI 医院门诊互联电子病历管理信息系统-#毕业设计
- spingboot|java计算机毕业设计基于springboot+vue+elementUI的口腔管理平台管理系统(前后端分离)