码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot图片验证码


    “原生 js + SpringBoot + hutool 工具” 实现浏览器验证码功能,点击可刷新。

    文章目录

      • 一、理解 “ 服务器 / 浏览器 ”沟通流程(3步)
      • 二、开发前准备:
      • 三、 代码实现
      • 四、“点击验证码图片自动刷新” 是如何实现的 ?
      • 五、最终效果

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

    • 第1步:浏览器使用image-20220812171046578


      二、开发前准备:

      • Spring Boot开发常识
      • hutool工具(hutool是一款Java辅助开发工具,利用它可以快速生成验证码图片,从而避免让我们编写大量重复代码,具体使用请移至官网)
      
      <dependency>
          <groupId>cn.hutoolgroupId>
          <artifactId>hutool-captchaartifactId>
          <version>5.8.5version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      三、 代码实现

      【 index.html 】页面

      DOCTYPE html>
      <html lang="zh-cn">
      <head>
          <meta charset="UTF-8">
          <title>验证码页面title>
      head>
      <body>
        
      <form action="#" method="post">
        
        	
          <img src="/test/code" id="code" onclick="refresh();">
        
      form>
        
      body>
      
      
      <script>
          function refresh() {
              document.getElementById("code").src = 
                "/test/code?time" + new Date().getTime();
          }
      script>
      html>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25

      【SpringBoot后端】

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

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

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

       <img src="/test/code" id="code" onclick="refresh();">
      
      ......
      
      
      <script>
          function refresh() {
              document.getElementById("code").src = 
                "/test/code?time" + new Date().getTime();
          }
      script>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

      五、最终效果

      code

  • 相关阅读:
    从零玩转系列之微信支付开篇
    vue使日历组件点击时间渲染到时间输入框
    MSYS2 介绍、下载与安装、Pacman常用命令
    python-文件操作常用功能-2
    【寻路】超级简单的A星寻路算法实现
    Mysql常见日志作用
    [npm]npm包的分类
    Java笔记——控制台模拟“双色球”福利彩票游戏
    linux添加一条到中间路由器的路由
    最近身边一个技术负责人裸辞了...
  • 原文地址:https://blog.csdn.net/qq_35760825/article/details/126308778
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号