验证码功能:kaptcha生成验证码

embedded/2024/10/11 13:21:45/

结合 kaptcha生成验证码功能。

kaptcha官网

  • 导入jar包
  • 编写Kaptcha配置类
  • 生成随机字符、生成图片

导包

<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha -->
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>
编写配置类
java">   @Beanpublic 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","0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");/*验证码产犊:4位*/properties.setProperty("kaptcha.textproducer.char.length","4");/*干扰规则*/properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");DefaultKaptcha kaptcha = new DefaultKaptcha();Config config  = new Config(properties);kaptcha.setConfig(config);return kaptcha;
使用
  • controller层

自动注入

java"> @Autowiredprivate Producer kaptchaProducer;

请求方法:详细注释

java">@RequestMapping(path = "/kaptcha",method = RequestMethod.GET)public void getKaptch(HttpServletResponse response , HttpSession session){/*生成验证码*/String text = kaptchaProducer.createText();/*传入验证码生成验证码图片*/BufferedImage image = kaptchaProducer.createImage(text);/*将验证码存入session*/session.setAttribute("kaptcha",text);/*图片输出给浏览器*/response.setContentType("image/png");try {/*以输出流写入图片*/OutputStream os = response.getOutputStream();ImageIO.write(image, "png", os);} catch (IOException e) {logger.error("响应验证码失败"+e.getMessage());}}

测试:输入请求路径,获得一张验证码图片,说明方法是没什么问题的。

引入登录页

测试完成后,可以在登录页面进行引入了,替换前端的静态图片。

<div class="col-sm-4">
<img th:src="@{/img/captcha.png}" style="width:100px;height:40px;" class="mr-2"/><a href="javascript:;" class="font-size-12 align-bottom">刷新验证码</a>
</div>    

只需要将其中的img路径换掉即可。

<img th:src="@{/kaptcha}" />

替换超链接指向:refresh_kaptcha()为刷新验证码javascript方法

<a href="javascript:refresh_kaptcha();" class="font-size-12 align-bottom">刷新验证码</a>

为了降低代码的复用性,将请求的项目路径放入全局JS中作为一个常量处理。

javascript">var CONTEXT_PATH = "/community";

javascript实现点击刷新验证码

javascript"><script>/*刷新验证码实现*/function refresh_kaptcha(){/*注意这里的/kaptcha和图片中的路径其实是一样的,为了防止浏览器误以为是同一个请求路径请求静态资源而被忽略,在后面加一些参数(参数本身对功能没有影响)*/var path = CONTEXT_PATH + "/kaptcha?p=" + Math.random();$("#kaptcha").attr("src",path);}</script>

注意这里的/kaptcha和图片中的路径其实是一样的,为了防止浏览器误以为是同一个请求路径请求静态资源而被忽略,在后面加一些参数(参数本身对功能没有影响)

最终效果


http://www.ppmy.cn/embedded/14868.html

相关文章

Flink 实时数仓(二)【ODS 层开发】

前言 最近投了不少的实习&#xff0c;也收到不错的反馈&#xff0c;虽然是中小公司偏多&#xff0c;但是毕竟现在这个环境双非进大厂实习可不同当年了。可惜的是学院不放人&#xff0c;辅导员让我把课上完乖乖等着失业进厂&#xff0c;无奈啊&#xff0c;遍身罗绮者&#xff0c…

3D感知生成对抗网络的高斯溅射解码器

Gaussian Splatting Decoder for 3D-aware Generative Adversarial Networks 3D感知生成对抗网络的高斯溅射解码器 Florian Barthel1, 2  Arian Beckmann1  Wieland Morgenstern1  Anna Hilsmann1  Peter Eisert1,2 Florian Barthel 1, 2 阿里安贝克曼Wieland晨星Anna Hils…

flutter 设置全屏 和隐藏状态栏和导航栏

设置全面屏 使用 SafeArea 将页面套起来 top bottom 都设置为true SafeArea(top: false,bottom: false,child: Container(child: _body(),), ), 隐藏状态栏和导航栏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);overlays 中可以填需要展示的 如…

springboot基于点餐码 二维码在线点餐系统vue.js+java

Maven: 项目管理和构建自动化工具&#xff0c;用于java项目。 java: 广泛使用的编程语言&#xff0c;适用于构建跨平台应用。 Springmvc:从而在使用Spring进行WEB开发时&#xff0c;可以选择使用Spring的Spring MVC框架。 MyBatis: java持久层框架&#xff0c;支持定制化SQL、存…

iOS 17上如何恢复数据?iOS 17 数据恢复软件

“您好&#xff0c;我正在为我的 iPhone 寻找一款iOS 17 数据恢复软件。升级到 iOS 17 后&#xff0c;我丢失了 iPhone 上的所有照片、联系人和消息。有什么建议吗&#xff1f;” ——丹尼 iOS 17数据恢复软件下载 升级到iOS 17后如何恢复丢失的数据&#xff1f;由于在 iPhone…

Linux上部署Jupyter notebook

安装jupyter notebook pip install notebook #或者 conda install notebook配置 jupyter notebook --generate-config## The IP address the notebook server will listen on. # Default: localhost # 设置可以访问的ip, 默认是localhost, 将其改为 * c.NotebookApp.ip *#…

Jackson 2.x 系列【29】Spring Boot 集成之 Redis 序列化/反序列化

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. RedisTemplate3. RedisSerializer3.1 J…

开源事件通知库libevent及网络连接管理模块bufferevent详解

目录 1、libevent介绍 1.1、什么是libevent&#xff1f; 1.2、libevent特点 1.3、网络连接管理模块bufferevent 2、bufferevent有什么用&#xff1f; 3、bufferevent的整体设计与实现细节 3.1、整体概况 3.2、evbuffer与bufferevent 3.3、defer callback 4、bufferev…