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

2024-04-25 17:28

本文主要是介绍验证码功能:kaptcha生成验证码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

结合 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>
编写配置类
   @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层

自动注入

 @Autowiredprivate Producer kaptchaProducer;

请求方法:详细注释

@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中作为一个常量处理。

var CONTEXT_PATH = "/community";

javascript实现点击刷新验证码

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

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

最终效果

这篇关于验证码功能:kaptcha生成验证码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/935322

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr