生成图片验证码的两种实现方式

2023-11-17

最近工作中,需求让新加一个图片验证码功能,其实这个功能之前自己写过,想必跟大家现在心里想到的实现方式一样,要么是通过servlet实现请求操作,要么是通过get请求实现操作。然后在后台通过session存储图片上的字符串,和之后前台请求过来的带的输入的字符串参数,做比较,判断是否一样。这种方式在这就不仔细说了,方法代码网上都有参考,下边会附上相关文献。
在这里主要说一下另外一种的实现方式,是在一篇博客里边看到的,写的挺好的,下边也有来源地址:
由于考虑到在多台机器上跑,不能用session, 于是决定 按照以下方案解决:
   1,页面加载时,ajax异步调用后台;
   2,后台生成验证码, 生成的验证码图片用base64编码转变成字符串 ,与此同时将验证码加密存放在json返回值中(验证码的加密可以 自己选用加密方式 ,只要加密解密能对应上就行);
   3,页面接受验证码(加密)存放在 隐藏域 中,页面用img标签接受base64编码的图片,同时给 img标签绑定点击事件,调用2生成验证码。
   4,当页面提交时,验证加密验证码和用户输入验证码加密的字符串即可。

相同点:
都是要想生成BufferedImage
不同点:
传统的用session的手法是最后将image输出到输入流里边,返回到客户端,直接src里边get方法去接收
  1.  BufferedImage image = (BufferedImage) objs[1];  //image生成方式就不细说了,可以网上查看
  2.     response.setContentType("image/png");  
  3.     OutputStream os = response.getOutputStream();  
  4.     ImageIO.write(image, "png", os); 
现在的是用base64对image进行编码,返回字符串,然后页面<image>标签中src对应的格式,如下:
BufferedImage bi = robot.createScreenCapture(r);// image生成方式就不细说了,可以网上查看 ByteArrayOutputStream os = new ByteArrayOutputStream(); OutputStream b64 = new Base64.OutputStream(os);
ImageIO.write( bi , "png", b64); //写入的是base64编码后的字符串 String result = os.toString("UTF-8");
String param = "data:image/png;base64,"+result;//拼接固定的接收格式
resultMap.put("image",param);//返回前台
js接收后, $("#imgObj").attr("src",param); <img id="imgObj" src="" />
参考文献:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成图片验证码的两种实现方式 的相关文章

  • iOS navigationController中回到tabbarController根视图方法

    根据需求来改变跳转 self navigationController popToRootViewControllerAnimated NO self dismissViewControllerAnimated NO completion
  • php GD库做水印功能,合并图片

    1 创建一个适应大小的底层图片 2 读取需要拼接的图片 dst data file get contents dst src dst img imagecreatefromstring dst data 3 把读取的图放到指定的位置 这里需
  • 使用Java生成6位或4位随机数的短信验证码

    代码如下 package XXXXX import java security SecureRandom import java util Random 作用 用于发送短信验证码 br 使用场景 找回密码 date Created by S
  • 非常简单的无闪刷新验证码原理

    非常简单的无闪刷新验证码原理 只有这一段事件触发语句全搞定 nclick this src GifCode asp newDate getTime GifCode asp验证码的图片 事件 nclick this src GifCode a
  • Ajax 和 PHP 实现验证码的实时验证

    我的个人博客 逐步前行STEP PHP的图像处理功能强大 做一张验证码图片也是非常简单的 但是 在实现实时验证时 确遇到了一个难题 我用nat123对我的电脑上的网站进行端口映射 实现了在外网访问 本来是采用cookie的方式用js对验证码
  • 使用JavaMail发送邮件时嵌入公司logo图片

    使用JavaMail发送邮件时嵌入公司logo图片 第一种方式 img 标签和 logo 图片链接 第二种方式 使用 img 标签和图片 base64 字符串 第三种方式 推荐 将 logo 当做附件一起发送并设置 ContentID 再使
  • [从零开始学DeepFaceLab-6]: 使用-命令行八大操作步骤-第3步:从目标视频中提取图片

    目录 总体流程 步骤3 从目标视频中提取图片 3 0 目标视频文件和大小的选择 3 1 命令 3 cut video drop video on me bat 可选
  • 爬虫遇到验证码必须要知道的解决办法(干货)

    对于爬取数据而言 有的网站在登录时或者采集数据过程中 都会出现验证码 对于网络爬虫而言 解决验证码识别识别是非常重要的一件事 今天 我们将讨论有关验证码的5件事 以帮助大家更好的进行网络数据抓取 1 什么是验证码 2 验证码是如何工作的 3
  • CocosCreator3.0加载远程图片资源

    在微信小游戏平台 需要获取了微信头像 对于这个需求 需要这样来做 获取微信用户信息 得到微信小游戏头像的http地址 在Cocos引擎使用loadRemote来加载 这其中的问题在于 使用loadRemote加载时获得的对象和2 x的版本不
  • 微信小程序 短信验证 功能的实现(附案例代码/前后端/直接用)

    模块效果展示 小程序界面 实现的功能 小程序端 请求获取短信验证码 两次请求之间间隔至少一分钟 填写必填内容后 才能提交表单 手机号合法性检验 后台 接前台请求后 通过阿里云发送短信 生成随机数字验证码 默认6位 收到提交的表单后 对验证码
  • 创建图片外链——“极简图床”

    开发微信小程序项目 上传代码时要求项目文件大小不能超过2M 那么 当小程序页面里有很多图片时 如果全部放在项目文件中 就很容易使得代码包超过2M 为了压缩代码 这时就需要将图片放在其它平台上 然后在小程序项目代码中引用需要的图片的外链地址
  • java 图片验证码

    image jsp 主要是采用下面导入的几个包来绘制 验证码图片
  • 原生JS局部刷新

    目录 使用XMLHttpRequest对象进行异步请求 2 使用fetch API进行异步请求 3 使用事件监听器进行局部刷新 4 servlet实现img验证码局部刷新 依赖jar包 Servlet login jsp 在原生JS中 可以
  • wps插入图片显示不全、混乱

    问题如下 原因 格式混乱 解决办法 1 统一格式 使用格式刷统一文档的格式 2 Ctrl A 全选 重新选择行距 3 重新粘贴图片 选择嵌入型
  • 图片素材网站

    七大壁纸网站满足所有分辨率需求 如今手机电脑都是1080p起步 偏高端的2k 高端的4k都逐渐进入普通大众的接受范围 而电视机近两年不是4k都不好意思拿出手 虽然电视4k在今年这个时候对普通人来说也并不实用 我经常就为了找一些分辨率高的壁纸
  • 谷歌开源图片压缩算法Guetzli实测体验报告

    作者 王亚军 编辑 宋秉金 王亚军 腾讯工程师 负责OMG无线新闻 腾讯视频图片服务等的业务运维工作 阅读原文 更多技术干货 请访问腾云阁 谷歌大神又出开源新技术啦 这次是对JPEG格式的图片采用全新算法重新编码 输出的图片还是JPEG但是
  • springboot图片验证码

    前言 大家好 我是小小 今天我们用五分钟来用springboot实现我们常用的图形验证码功能模块 用户登录几乎是一个线上系统必不可少且使用相对比较频繁的一个模块 为了防止恶意暴力尝试 防止洪水攻击 防止脚本自动提交等 验证码是一个较为便捷且
  • cocos2dx:瓦片地图加载失败及黑线问题

    问题 1 瓦片地图加载失败 运行时 获取瓦片地图的层失败 调试发现 获取的层是一个 NULL 遇到这个问题 我第一反应是图片路径有问题 但经过检查发现 路径没有问题 然我就怀疑 是我的代码有问题 然而并没有 调试无果 我就把目光转向瓦片地图
  • 01-windows下python爬取网页上的图片

    1 首先下载python 安装环境 pycharm anaconda的下载与安装 移步各个主页下载 一键式安装 pycharm http www jetbrains com pycharm anaconda https www anacon
  • [架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

    目录 前言 一 什么是ADMES 首先 需求是分层次的 其次 需求是有结构的 有维度的 再次 不同层次需求 不同维度需求之间可以相互转化 难点 经验积累 最终 标准化的ADMEMS需求矩阵 二 软架构前的需求理解 1 目标 2 时机 3 四

随机推荐

  • [转载]一分钟讲明白区块链数据不可篡改和51%攻击原理

    转载 一分钟讲明白区块链数据不可篡改和51 攻击原理 如果你回家过年需要向亲戚朋友讲区块链 这篇文章能让你一分钟讲明白区块链最大的优点 数据不可篡改 图片发自简书App 第1章 不可篡改的数据库其实并不新鲜 我们都有微信群 微信群的聊天记录
  • Swing组件中面板(JPanel)的使用

    JPanel组件定义面板实际上是一种容器组件 用来容纳各种其他轻量级组件 此外 用户还可以用这种面板容器绘制图形 JPanel的构造方法如下 JPanel 创建具有双缓冲和流布局 FlowLayout 的面板 JPanel LayoutMa
  • SadTalker 让图片说话

    参考 https github com OpenTalker SadTalker 其他类似参考 https www d id com 输入图片加音频产生2d视频 安装使用 1 拉取github 下载对应安装库 2 下载对应模型baidu网盘
  • Windows如何开机自动全屏打开chrome浏览器

    创建一个bat文件 C Program Files Google Chrome Application chrome exe explicitly allowed ports 10080 18080 start fullscreen url
  • 【嵌入式】用STM32F103c8t6芯片完成对SD卡的数据读写

    目录 一 SD卡协议 1 SD卡的体系架构 2 SD卡寄存器列表 3 SD卡初始化 SPI模式 4 SD卡读写 SPI模式 二 STM32CubeMX 三 Keil代码修改 四 电路连接 五 烧录运行结果 六 心得体会 七 参考链接 一 S
  • Linux tcpdump抓包命令

    1 tcpdump抓包命令 c 指定抓取包的数量 即最后显示的数量 i 指定tcpdump监听的端口 未指定 选择系统中最小的以配置端口 i any 监听所有网络端口 i lo 监听lookback接口 nn 对监听地址以数字方式呈现 且对
  • 新版TCGA的突变数据SNP下载和整理

    关于TCGAbiolinks包的学习前面一共介绍了5篇推文 今天继续学习如何使用TCGAbiolinks下载和整理MAF格式的突变数据 之前的TCGA的MAF文件是可以下载的 每个癌症包含4种软件得到的突变文件 后来就改版了 不让你随便下载
  • 网络篇 OSPF的路由器类型-42

    OSPF路由器类型 在OSPF初篇的时候 就说到了OSPF是一种比EIGRP协议更加复杂的大型网络配置协议 它的路由器类型也分为了好几种 现在我们通过下图来了解一个OSPF路由器类型 1 内部路由器 所有的接口都接入到同一个区域中的路由器
  • 自定义类型——结构体、枚举、联合

    一 结构体 我们知道 数组是将相同类型的元素放在一起 类似于数组 结构体是将相同或不同的元素放在一起 eg struct example example是结构体名 可以省略 但不建议省略 内部的是结构体成员 int a char c flo
  • 冲量在线创始人刘尧:以信创软硬件结合场景为突破口“占山为王”

    数据大爆炸的时代 发展信创 保证数据的安全与流通便成为刻不容缓的议题 专注于数据智能互联解决方案的科技创新企业冲量在线 致力于促进数据生产要素在社会间的互联互通 构建可信 安全 隐私 公平 高效的 数据互链网 作为隐私计算结合信创的先行者
  • php简单密码验证txt,php用户名和密码的简单验证

    5 php页面提交form表单 username password 5 1 php页面接收form表单 并进行处理 设置用户名和密码 arr user array user pwd arr pwd array user gt 1111 pw
  • React 生命周期

    React 类组件的生命周期 就是组件从创建到消耗的过程 只有类组件才有生命周期 分为 挂载阶段 更新阶段 卸载阶段 挂载阶段 钩子函数 constructor 创建组件时 最先执行 作用 初始化 state 创建 Ref 使用 bind
  • 单机版kubernetes

    Kubernetes 集群的搭建是有一定难度的 官方安装推荐了MiniKube作为单机调试 学习 1 centos安装 1 1 先决条件 安装VirtualBox KVM Note Minikube 也支持 vm driver none 选
  • 【leecode】小练习(简单8题)

    def twoSum nums target 给定 nums 2 7 11 15 target 9 因为 nums 0 nums 1 2 7 9 所以返回 0 1 type nums List int type target int rty
  • nfs漏洞的处理:目标主机showmount -e信息泄露(CVE-1999-0554)

    文章目录 前言 一 漏洞内容 二 配置现状 1 nfs server节点 etc exports文件的配置 2 client节点执行showmount e 测试 三 nfs server节点增加访问控制的配置 1 etc hosts all
  • Node.js中Redirect拼接参数方法,带参数重定向

    一 在Node js里req redirect 里拼接URL是这样的 client1 req query client client1是你获取到的需要拼接的变量 res redirect allNode client client1 注意冒
  • openstack实战之使用sysprep工具封装windows7镜像

    openstack实战之使用sysprep工具封装windows7镜像 在openstack云平台环境下 使用sysprep封装windows7系统主要目的是清理虚拟机的SID 避免使用同一windows7镜像克隆出的虚拟机出现相同的SID
  • hive数据表去重方法

    1 hive 0 8 0数据表去重方法 问题描述 hive的外部表test中 在若干字段上存在重复现象 现在需要将若干字段上值相同的多条记录 只保其中留一条 舍弃其余的 解决思路 1 group by的方法 首先新建与test表完全相同的新
  • 单点登录的解析和代码实现

    单点登录 系统简介 Http协议 web应用采用browser server架构 http作为通信协议 http是无状态协议 浏览器的每一次请求 服务器会独立处理 不与之前或之后的请求产生关联 这个过程用下图说明 三次请求 响应对之间没有任
  • 生成图片验证码的两种实现方式

    最近工作中 需求让新加一个图片验证码功能 其实这个功能之前自己写过 想必跟大家现在心里想到的实现方式一样 要么是通过servlet实现请求操作 要么是通过get请求实现操作 然后在后台通过session存储图片上的字符串 和之后前台请求过来