首页 > 编程语言 >java生成数字运算验证码

java生成数字运算验证码

时间:2024-05-16 18:21:37浏览次数:20  
标签:map code java uuid 验证码 生成 captcha 运算

第一步,引入依赖

<!--验证码依赖-->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>   <!-- 算数验证码使用 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.3.14</version>
<optional>true</optional>
</dependency>   注意:如果使用jdk17报错:java.lang.NullPointerException: Cannot invoke “javax.script.ScriptEngine.eval(String)“ because “engi 添加依赖可以解决  原文链接https://blog.csdn.net/u011410254/article/details/123735205 <!--解决图片验证码报错javax.script.ScriptEngine.eval(String)-->
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.3</version>
</dependency>   //生成验证码controller层代码
@GetMapping("/captcha")
public ApiResult getCode() {
// 创建一个HashMap来存储验证码信息
Map<String, Object> map = new HashMap<>(2);
// 生成一个随机UUID
String uuid = UUID.randomUUID().toString();
// 创建一个用于存储验证码的key,格式为:login_tokens:uuid
String verifyKey = "login_tokens:" + uuid;
String code;
// 创建一个ArithmeticCaptcha实例,用于生成数学验证码
ArithmeticCaptcha captcha = new ArithmeticCaptcha(111, 36 , 2);
// 获取数学验证码的文本
code = captcha.text();
// 将验证码的uuid和图片保存到HashMap中
map.put("uuid", uuid);
map.put("img", captcha.toBase64());
// 将验证码信息保存到Redis中,设置过期时间为2分钟
redisService.setCacheObject(verifyKey, code, 2L, TimeUnit.MINUTES);
// 返回验证码信息
return ApiResult.success(map);
}     生成一串base64字符串   base64转图片地址:https://products.aspose.app/imaging/zh-hans/conversion/base64-to-image  

标签:map,code,java,uuid,验证码,生成,captcha,运算
From: https://www.cnblogs.com/ZXDZXD/p/18196437

相关文章

  • Java面试题:Spring中的循环依赖,给程序员带来的心理阴影
    循环依赖通常发生在两个或多个SpringBean之间,它们通过构造器、字段(使用@Autowired)或setter方法相互依赖,从而形成一个闭环。下面是一个使用字段注入(即使用@Autowired)导致的循环依赖的示例: 示例代码: 假设我们有两个类,ClassA和ClassB,它们相互依赖:publicclassClassA{......
  • JavaScript中执行上下文和执行栈是什么?
    一、执行上下文简单的来说,执行上下文是一种对Javascript代码执行环境的抽象概念,也就是说只要有Javascript代码运行,那么它就一定是运行在执行上下文中执行上下文的类型分为三种:全局执行上下文:只有一个,浏览器中的全局对象就是 window对象,this 指向这个全局对象函数执行上下......
  • Java IO
    JavaIO的理解在Java编程中,IO(Input/Output)是处理输入和输出操作的基础。JavaIO库提供了一套完整的API,用于从各种源(如文件、网络、内存等)读取数据,并将数据写入到各种目标中。理解JavaIO库的设计思路、特性和实际用途对于开发健壮且高效的Java应用程序至关重要。JavaIO的设计思......
  • java中的反射
    java中的反射能够分析信息的能力叫反射目录java中的反射1.获取类的方法2.类对象常用功能一、构造方法获取指定的公共构造器获取指定的所有构造器(公共+非公共)获取所有的公共构造方法获取所有的构造方法(公共+非公共)二、成员变量获取指定公共成员变量获取指定所有成员变量(公共+非......
  • java中的拷贝
    目录1.浅拷贝(只拷贝原对象的地址)2.深拷贝(拷贝原对象的所有值)深拷贝的方式这里说的拷贝主要是针对引用类型,而对于基本数据类型,拷贝就是直接把值给另一个对象1.浅拷贝(只拷贝原对象的地址)原对象的值发生变化,拷贝对象的值也会随之发生变化,因为原对象和拷贝对象是同一块空间/......
  • LLM-通义千问:掌握的Java知识过于零散,怎么系统地串一串
    要系统地整理和深化你的Java知识,可以遵循以下几个步骤和策略:1.回顾基础语言基础:从Java的基本语法开始,包括变量声明、数据类型、运算符、控制结构(if-else,for,while等)、数组和方法定义。面向对象编程:深入理解类与对象、继承、封装、多态这些核心概念,并实践如何设计良好的类......
  • java下载zip文件
    一、使用工具*java.utils下的ZipOutputStream*java.net的http请求工具HttpURLConnection二、zip下载1.通过浏览器以附件的形式下载到客户端思路:response的write方法要写出一个byte[],所以我们需要从ZipStreamOutputStream中获取到byte[]。在java中......
  • JavaSE入门学习
    Java入门学习目录Java入门学习Java特征和优势Java三大版本开发环境搭建JDK下载及安装配置环境变量HelloWorld及简单语法规则使用IDE开发1.创建一个Java项目(IDEA)2.在该项目src目录下new一个class文件3.编辑代码4.运行代码Java特征和优势简单性面向对象可移植性高性能......
  • 在Linux中,如何进行Java应用性能调优?
    在Linux环境中进行Java应用程序的性能调优是一个多步骤的过程,涉及到监控、分析和调整多个层面的配置。以下是进行Java应用性能调优的一些关键步骤和策略:1.监控和分析工具的使用JVM监控工具:利用jstat,jmap,jstack,和jconsole等JDK自带的工具,以及更高级的工具如VisualVM、JP......
  • JavaScript object array sort by string bug All In One
    JavaScriptobjectarraysortbystringbugAllInOnebug//purestringsarray,sortOK✅letarr=["banana","strawberry","apple"];JSON.stringify(arr.sort());//'["apple","banana","strawbe......