当前位置: 首页 > news >正文

【JavaEE进阶】验证码案例

🌲实现说明

🎄Hutool介绍

🌳准备工作

🌴约定前后端交互接口

🚩接口定义

🚩实现服务器后端代码

🚩前端代码

🚩整体测试


🌲实现说明

随着安全性的要求越来越⾼,⽬前项⽬中很多都使⽤了验证码,验证码的形式也是多种多样,更复杂的图形验证码和⾏为验证码已经成为了更流⾏的趋势

验证码的实现⽅式很多,可以前端实现,也可以后端实现.⽹上也有⽐较多的插件或者⼯具包可以使⽤, 咱们选择使⽤Hutool提供的⼩⼯具来实现

🎄Hutool介绍

咱们课程中验证码的实现,使⽤Hutool提供的⼩⼯具来实现

Hutool是⼀个Java⼯具包类库,对⽂件、流、加密解密、转码、正则、线程、XML等JDK⽅法进⾏封 装,组成各种Util⼯具类

Hutool是⼀个⼩⽽全的Java⼯具类库,通过静态⽅法封装,降低相关API的学习成本,提⾼⼯作效 率,使Java拥有函数式语⾔般的优雅,让Java语⾔也可以"甜甜的"

Hutool官⽹: https://hutool.cn/

Hutool参考⽂档: https://hutool.cn/docs/#/

Hutool源码: GitHub - dromara/hutool: 🍬A set of tools that keep Java sweet.

我们不需要知道这个工具中实现这些功能的代码是如何实现的,我们只需要调用它的API即可。

使用方法:

  • 第一步:导包,需要什么就导什么包,也可导入该工具中所有的包(此处就导验证码的包)
  • 第二步:查看验证码接口,实现类,方法介绍说明
  • 第三步:查看代码及注释(部分代码实现,具体各种验证码查看官网)
  • 第四步:代码具体实现
  • 运行项目,发送请求,查看line.png文件;后端还打印了该验证码,此处不在展示

小结:Hutool工具有各种各样的验证码,以及实现方法,当前不在一一展示,可自行浏览官网。

🌳准备工作

界⾯如下图所⽰

1. ⻚⾯⽣成验证码

2. 输⼊验证码,点击提交,验证⽤⼾输⼊验证码是否正确,正确则进⾏⻚⾯跳转

创建项⽬,引⼊SpringMVC的依赖包,把前端⻚⾯放在项⽬中

index.html代码如下:

success.html代码如下:

前端代码验证:

🌴约定前后端交互接口

🚩接口定义

接口一:生成验证码

请求:

GET /captcha/get

响应:图片内容

浏览器给服务器发送⼀个 GET /captcha/get 这样的请求,服务器返回⼀个图⽚,浏览器显⽰在⻚⾯上

接口二:校验验证码是否正确

请求: 

/cpatcha/check

响应:

true/false

根据⽤⼾输⼊的验证码,校验验证码是否正确true:验证成功.false:验证失败

🚩实现服务器后端代码

首先在pom文件中引入依赖

图片生成代码:

测试:

由于我们学习了SpringBoot的配置,我们可以把图片的高度和宽度放在配置中

代码:

验证码校验:

注意:若使用Hutool工具中的接口来校验验证码的话,就需要把上述图片生成代码中的ICaptcha接口提到成员变量上,但是这只适用于单线程的时候,若是多线程的情况下,用多个客户端访问时只有这一个对象,那很显然是不合适的,所以这个方法是不适合的。

此时就可以借助前面学习的Session了,既然有不同的客户端,我们就可以通过Session来进行存储,每个客户端存储的是自己的Session,即在校验的时候,我们取的是自己的Session信息

代码:

测试:

生成验证码:

正确校验验证码:

错误校验验证码:

🚩前端代码

通过ajax请求数据

代码:

🚩整体测试

正确校验:

错误校验:

相关文章:

【JavaEE进阶】验证码案例

目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…...

Uniapp 短视频去水印解析工具开发实现

最近搞了一个有意思的小工具——短视频去水印解析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…...

计算机网络-八股-学习摘要

一:HTTP的基本概念 全称: 超文本传输协议 从三个方面介绍HTTP协议 1,超文本:我们先来理解「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等&am…...

编程速递-庆祝Delphi诞生30周年!

庆祝Delphi 30周年纪念是一个特别的时刻。 回到1995年,也就是30年前,在微软Windows和互联网时代的曙光初现之时,Borland Delphi的创建者们无法想象,当时使用Borland Delphi构建的应用程序至今仍在运行——为全世界数十亿人服务。…...

每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块

本文重点 前面我们学习了VGG,从现在开始我们将学习谷歌公司推出的GoogLeNet。当年ImageNet竞赛的第二名是VGG,而第一名就是GoogLeNet,它的模型设计拥有很多的技巧,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构 GoogLeNet的网络结构 如图所示就是Go…...

性能测试流程、主流性能工具

性能测试流程 性能测试流程 测试测试需求分析 性能测试计划和方案 测什么: 测试背景 测试目的 测试范围 谁来测: 进度和分工 交付清单 怎么测: 测试策略 性能测试用例设计 性能测试测试执行 性能分析和调优 性能测试报告 测试报告是…...

DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏

DeepSeek4j Spring Boot Starter 快速入门 简介 DeepSeek4j 是一个专为 Spring Boot 设计的 AI 能力集成启动器,可快速接入 DeepSeek 大模型服务。通过简洁的配置和易用的 API,开发者可轻松实现对话交互功能。 环境要求 JDK 8Spring Boot 2.7Maven/Gr…...

无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架

Solon 框架! Solon 是新一代,Java 企业级应用开发框架。是杭州无耳科技有限公司的“根级”开源项目(最近“杭州六小龙”很火啊,我们也是杭州的哦)。从零开始构建(No Spring、No Java-EE、No Servlet&#…...

【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版

针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版 链接:https://pan.xunlei.com/s/VOJ8PZd4avMubnDzHQAeZDxWA1?pwdnjwm# 直接复制到游戏安装目录,保持与游戏主程序同目录下。...

使用 playwright 自定义 js 下载的路径和文件名

遇到一个问题,点击按钮自动下载文件,路径和文件名都不能自定义,可以用 playwright 来解决这个问题 from playwright.sync_api import sync_playwright import os import time class ExcelDownloader: def __init__(self, download_pat…...

Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析

#作者:孙德新 文章目录 分区分配操作(kafka-reassign-partitions.sh)1.1 分区扩容、数据均衡、迁移(kafka-reassign-partitions.sh)1.2、修改topic分区partition的副本数(扩缩容副本)1.3、Partition Reassign场景限流1.4、节点内副本移动到不…...

3.从零开始学会Vue--{{生命周期,工程化,组件化}}

1.生命周期钩子 1.是什么 生命周期 概念:就是一个Vue实例从创建 到 销毁 的整个过程 生命周期包括:① 创建 ② 挂载 ③ 更新 ④ 销毁 四个阶段 1.创建阶段:创建响应式数据 2.挂载阶段:渲染模板 3.更新阶段:修改…...

Python--网络编程

3. 网络编程与Socket 3.1 Socket基础 创建Socket import socket# TCP Socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# UDP Socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)服务器端函数 函数描述​bind((host, port))​绑定…...

【java】方法的基本内存原理(栈和堆)

java内存主要分为栈和堆,方法相关的部分主要在栈内存里,每个方法调用时会在栈里创建一个栈帧,存放局部变量和方法执行的信息。执行完后栈帧被销毁,局部变量消失。而对象实例存在堆里,由垃圾回收器管理。 **Java方法内…...

SQLMesh 系列教程4- 详解模型特点及模型类型

SQLMesh 作为一款强大的数据建模工具,以其灵活的模型设计和高效的增量处理能力脱颖而出。本文将详细介绍 SQLMesh 模型的特点和类型,帮助读者快速了解其强大功能。我们将深入探讨不同模型类型(如增量模型、全量模型、SCD Type 2 等&#xff0…...

SpringBoot(接受参数相关注解)

文章目录 1.基本介绍2.PathVariable 路径参数获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息 1.…...

hbase合并队列超长问题分析

问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...

FPGA的星辰大海

编者按 时下风头正盛的DeepSeek,正值喜好宏大叙事的米国大统领二次上岗就业,OpenAI、软银、甲骨文等宣布投资高达5000亿美元“星际之门”之际,对比尤为强烈。 某种程度上,,是低成本创新理念的直接落地。 包括来自开源社区的诸多赞誉是,并非体现技术有多“超越”,而是…...

认识vue-admin

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…...

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…...

初次使用 Taotoken 如何通过五分钟快速入门文档完成调用

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用 Taotoken 如何通过五分钟快速入门文档完成调用 作为一名初次接触大模型聚合平台的新用户,最关心的往往是能否…...

【AI面试临阵磨枪-46】RAG 幻觉如何缓解?引用溯源、事实校验、反思机制

一、面试题目请你说明工业级 RAG 如何缓解幻觉?核心方案包含:引用溯源、事实校验、反思机制,分别怎么定义、怎么做、如何落地优化?二、知识储备1. 整体解决思路RAG 幻觉的本质是大模型脱离检索文档生成内容、编造信息、曲解原文、…...

OpenClaw 2.6.6 调用 Ollama 本地模型详细步骤

OpenClaw 2.6.6 连接 Ollama 本地模型教程 前置准备 已安装并正常打开 OpenClaw 2.6.6 Windows 版本OpenClaw 顶部 Gateway 状态保持在线电脑可正常联网,能访问 Ollama 官网电脑磁盘空间充足,本地模型占用空间较大提前确认需下载的模型名称&#xff08…...

QKeyMapper终极指南:Windows平台全设备按键映射与虚拟手柄模拟的完全解决方案

QKeyMapper终极指南:Windows平台全设备按键映射与虚拟手柄模拟的完全解决方案 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄…...

终极指南:如何利用ChatPaper快速生成专业论文方法部分

终极指南:如何利用ChatPaper快速生成专业论文方法部分 【免费下载链接】ChatPaper Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结专业翻译润色审稿审稿回复 项目地址: https://gitcode.com/gh_mirrors/ch/C…...

AngularJS自定义指令开发终极指南:构建可复用组件的最佳实践

AngularJS自定义指令开发终极指南:构建可复用组件的最佳实践 【免费下载链接】angular-app Reference application for AngularJS 项目地址: https://gitcode.com/gh_mirrors/an/angular-app AngularJS作为一款经典的前端框架,其自定义指令功能为…...

PotPlayer字幕翻译终极指南:免费实现实时双语字幕的完整教程

PotPlayer字幕翻译终极指南:免费实现实时双语字幕的完整教程 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为观看外语…...

产品经理原型高效交付实战指南

一、原型交付的本质:从"画图"到"翻译" 原型不是美术作品,而是产品经理与业务方、研发团队之间的"需求契约"。优秀的原型交付需要同时满足三个维度:维度目标受众核心诉求常见失败点业务正确性用户/业务方“这是…...

5分钟快速上手!Calibre豆瓣插件终极安装指南,轻松获取中文图书元数据

5分钟快速上手!Calibre豆瓣插件终极安装指南,轻松获取中文图书元数据 【免费下载链接】calibre-douban Calibre new douban metadata source plugin. Douban no longer provides book APIs to the public, so it can only use web crawling to obtain da…...

基于MCP协议构建AI侍酒师:原理、配置与实战指南

1. 项目概述:为AI助手注入侍酒师灵魂 如果你和我一样,既是个技术爱好者,又对美食美酒有点追求,那你肯定遇到过这样的场景:周末想在家做顿大餐,打开冰箱看着一堆食材,却完全不知道该配什么酒。问…...