SpringBoot验证码

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

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

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

  • 第1步:浏览器使用<img src="/test/controller”>标签请求特定 Controller 路径。
  • 第2步:服务器 Controller 返回图片的二进制数据。
  • 第3步:浏览器接收到数据,显示图片。

image-20220812171046578


二、开发前准备:

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

三、 代码实现

【 index.html 】页面

<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>验证码页面</title> </head> <body> <form action="#" method="post"> <!-- img标签负责向服务器 Controller 请求图片资源 --> <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> 

【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()); } } 

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

  HTML 规范规定,在 <img src=“xxx”> 标签中,每当 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> 

五、最终效果

code

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233838.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • node 微信公众号开发_nodejs开发指南

    node 微信公众号开发_nodejs开发指南微信是手机用户必备的App,微信最开始只是作为社交通讯应用供用户使用,但随着用户量不断的增加,微信的公众号在微信上表现出来了它强大的一面,微信公众平台具有四大优势:1、平台更加稳固;2.用户关系更加平等;3.信息精选、定位准确; 微信的开放平台,微信公众平台凭借4大优点受到企业喜爱,企业通过微信公众平台把企业中的资讯信息和服务功能在这个平台完美呈现;作为前沿的开发者微信开发势在必行,虽然外面流行的

    2022年8月21日
    3
  • Python 获取窗口句柄,模拟鼠标点击

    Python 获取窗口句柄,模拟鼠标点击一、效果图二、代码importwin32guiimportwin32apiimportpyautogui#frompymouseimportPyMousehwnd_title={}defget_all_hwnd(hwnd,mouse):if(win32gui.IsWindow(hwnd)andwin32gui.IsWindowEnabled(hwnd)andwin32gui.IsWindowVisible(hwnd)

    2022年7月21日
    13
  • 搞定Android开发环境部署——非常详细的Android开发环境搭建教程[通俗易懂]

    搞定Android开发环境部署——非常详细的Android开发环境搭建教程[通俗易懂]引言在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立Android开发环境投入Android浪潮的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对准备进入Android开发的朋友有帮助。 Android开发环境搭建分为以下四步:第一步、安装JDK;第二步、安装Eclipse;第三步、下载并

    2022年7月23日
    10
  • python中用来抛出异常的关键字是( )_python异常抛出

    python中用来抛出异常的关键字是( )_python异常抛出广告关闭腾讯云11.11云上盛惠,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!主动抛出异常raisetypeerror(类型错误)#7.触发异常try:raisetypeerror(类型错误)exceptexceptionase:print(e)#8.自定义异常classmy…syntaxerror语法错误python代码非…

    2022年10月17日
    1
  • 学习笔记 – EasyUI官方网站演示[通俗易懂]

    学习笔记 – EasyUI官方网站演示[通俗易懂]EasyUI官方网站演示撰写:2016/03/21更新:2016/04/07博客地址:http://www.cnblogs.com/gibbonnet/p/5362801.html演示地址:h

    2022年7月4日
    25
  • CentOS7关于网络的设置

    CentOS7关于网络的设置装好CentOS7后,我们一开始是上不了网的这时候,可以输入命令dhclient,可以自动获取一个IP地址,再用命令ipaddr查看IP不过这时候获取的IP是动态的,下次重启系统后,IP地址也会变化,这时候我们可以把系统的IP设置为静态的,设置步骤如下:(1)点击VMware虚拟机左上角的“编辑”,选择“虚拟网络编译器”。(2)选中VMnet8(NAT模式),再点击右侧的…

    2022年4月28日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号