经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
SpringBoot+hutool实现图片验证码
来源:jb51  时间:2022/8/16 19:28:17  对本文有异议

一、理解 “ 服务器 / 浏览器 ”沟通流程(3步)

第1步:浏览器使用<img src="/test/controller”>标签请求特定 Controller 路径。

第2步:服务器 Controller 返回图片的二进制数据。

第3步:浏览器接收到数据,显示图片。

二、开发前准备:

Spring Boot开发常识

hutool工具(hutool是一款Java辅助开发工具,利用它可以快速生成验证码图片,从而避免让我们编写大量重复代码,具体使用请移至官网)

  1. <!-- pom 导包:hutool 工具 -->
  2. <dependency>
  3. <groupId>cn.hutool</groupId>
  4. <artifactId>hutool-captcha</artifactId>
  5. <version>5.8.5</version>
  6. </dependency>

三、 代码实现

【 index.html 】页面

  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>验证码页面</title>
  6. </head>
  7. <body>
  8. <form action="#" method="post">
  9. <!-- img标签负责向服务器 Controller 请求图片资源 -->
  10. <img src="/test/code" id="code" onclick="refresh();">
  11. </form>
  12. </body>
  13.  
  14. <!-- “点击验证码图片,自动刷新” 脚本 -->
  15. <script>
  16. function refresh() {
  17. document.getElementById("code").src =
  18. "/test/code?time" + new Date().getTime();
  19. }
  20. </script>
  21. </html>

【SpringBoot后端】

  1. @RestController
  2. @RequestMapping("test")
  3. public class TestController {
  4. @Autowired
  5. HttpServletResponse response;
  6. @Autowired
  7. HttpSession session;
  8.  
  9. @GetMapping("code")
  10. void getCode() throws IOException {
  11. // 利用 hutool 工具,生成验证码图片资源
  12. CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 5);
  13. // 获得生成的验证码字符
  14. String code = captcha.getCode();
  15. // 利用 session 来存储验证码
  16. session.setAttribute("code",code);
  17. // 将验证码图片的二进制数据写入【响应体 response 】
  18. captcha.write(response.getOutputStream());
  19. }
  20. }

四、“点击验证码图片自动刷新” 是如何实现的 ?

HTML 规范规定,在 <img src=“xxx”> 标签中,每当 src 路径发生变化时,浏览器就会自动重新请求资源。所以我们可以编写一个简单的 js 脚本,只要验证码图片被点击,src 路径就会被加上当前【时间戳】,从而达到改变 src 路径的目的。

  1. <img src="/test/code" id="code" onclick="refresh();">
  2.  
  3. ......
  4.  
  5. <!-- “点击验证码图片,自动刷新” 脚本 -->
  6. <script>
  7. function refresh() {
  8. document.getElementById("code").src =
  9. "/test/code?time" + new Date().getTime();
  10. }
  11. </script>

五、最终效果

 到此这篇关于SpringBoot+hutool实现图片验证码的文章就介绍到这了,更多相关SpringBoot 图片验证码内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号