Java Web实践专题——图形验证码的生成与使用

图形验证码的主要目的是为了增强的安全性,增加用户通过遍历所有可能性来破解密码的难度。
图形验证码的使用包括如下3部分:
l 图形验证码的生成;
l 在页面中的使用;
l 验证;
1、图形验证码的生成
假设在Servlet生成图形验证码,在JavaBean或者JSP中生成的基本过程是相同的。设计如下过程:
l 设置响应的文档类型;
l 生成随机码;
l 把随机码保存到session中;
l 生成图片;
l 把随机码画到内存图片上;
l 把内存图片发送到客户端;
1.1 设置响应的文档类型
在对用户进行响应的时候,需要设置文档类型,要生成图片文档类型可以设置为:image/gif。
在Servlet中的设置方式为:response.setContentType("image/gif");
如果在JSP页面中使用则需要使用:<%@ page contentType="image/gif"%>
1.2 生成随机码
可以根据各种随机数生成策略来生成,并且可以设置随机码有哪些字符组成以及随机码的长度。
本文给出的随机码字符是所有字母和数字。使用的随机码生成策略使用的是Random对象提供的。参考代码如下:
随机码字符列表:
public static final char[] code = {'a','b','c','d','e','f','g',
'h','i','j','k','l','m','n',
'o','p','q','r','s','t',
'u','v','w','x','y','z',
'A','B','C','D','E','F','G',
'H','I','J','K','L','M','N',
'O','P','Q','R','S','T',
'U','V','W','X','Y','Z',
'0','1','2','3','4',
'5','6','7','8','9'};
生成随机码的代码:
StringBuffer checkcode=new StringBuffer();
// 每循环一次,生成一位
for(int i=0;i<code_length;i++)
{
int generated=(new Random()).nextInt(62);
checkcode.append(code[generated]);
}
1.3 把随机码保存到session中
为了在用户提交验证码之后进行验证,需要保存生成的验证码,可以保存在session中。在Servlet中需要先获取session对象,然后再使用。
下面是参考代码:
// 把生成的验证码保存到session中
HttpSession session=request.getSession(true);
session.setAttribute("checkCode",checkcode.toString());
1.4 生成图片
使用BufferedImage类创建对象,然后使用画图对象画图。下面是参考代码:
// 创建内存图片,参数为图片的大小以及类型
BufferedImage image
= new BufferedImage(49,14,BufferedImage.TYPE_INT_RGB);
// 得到Graphics句柄
Graphics g = image.getGraphics();
// 设置画笔颜色
// g.setColor(Color.yellow);
// 画背景
g.fillRect(0,1,49,12);
1.5 把随机码显示在图片上
参考下面的代码:
// 设置字体色
g.setColor(Color.black);
// 画验证码
g.drawString(checkcode.toString(),4,11);
// 图象生效
g.dispose();
1.6 把生成的图片发送到客户端
参考代码如下:
ImageIO.write(image, "JPEG", response.getOutputStream());
这样就完成了动态图形验证码的生成。
2、在页面中使用图形码:
与使用其它图形的方式相同,使用<img src=”…”>标签。假设生成图片的Servlet的url-pattern值为checkcode,则在页面中加载图片的代码如下:
<img border=0 src="checkcode">
3、验证
获取用户输入的验证码,然后从session中获取保存的验证码,对比来确定是否相同,从而完成验证。
Java Web项目:实现10以内的算术验证码 Java Web开发主要是指使用Java语言进行网络应用程序的开发。Java提供了强大的标准库,包括用于Web开发的Servlet API和JavaServer Pages(JSP)。开发者可以使用这些库构建能够响应HTTP请求的应用程序,并生成动态网页内容。Random。 阅读详情

相关推荐

使用DeepSeek、MCP和AKShare实现智能金融问答系统技术方案

DeepSeek是由深度求索公司开发的大规模语言模型,最新版本DeepSeek-V3采用混合专家(MoE)架构,拥有671B参数,激活37B参数,在多项基准测试中表现优异3。要使用DeepSeek的API服务:访问DeepSeek平台注册账号获取API Key(形如AKShare是基于Python的金融数据接口库,提供股票、基金、期货、宏观经济等领域的海量数据。主要特点包括:免费开源,数据源丰富支持多种数据格式(DataFrame/JSON)持续更新维护安装命令。

Kin 3174

生成图片验证码时遇到的问题

Eclipse 警告提示:Access restriction:The type JPEGCodec is not accessible due to restriction on 两种解决方案: 1:Windows -> Preferences -> Java -> Compiler -> Errors/Warnings -> Deprecated and ...

shero1604的博客 947

机器人手眼标定快速精度验证方法

机器人手眼标定快速精度验证方法

laoli_的博客 1万+

图形滑动验证码JAVA实现【前后端结合】

一、为什么要验证码? 防暴力破解的课题一直是信息安全的重点,漏洞攻击更是开发者的噩梦。。。。 如果没有经历过这个噩梦,请感受一下被信安部门支配的恐惧。(一大堆漏洞给扫出来,您修代码吧) 二、怎么实现的? 前端:HTML+JS+CSS 开源组件:Layui 后端:Java 后端框架:SpringBoot 思路: 后端随机读取一张图片,利用算法随机“抠图”,返回base64码值到前端 前端读取到base...

J.R.Leonardo的博客 1万+

Acer宏碁暗影骑士擎AN515-58原厂系统恢复指南:从ISO镜像到完整出厂设置

本文详细介绍了为Acer宏碁暗影骑士擎AN515-58游戏本恢复原厂系统的完整指南。从准备工作、数据备份到下载官方镜像、制作恢复U盘,再到BIOS设置与恢复流程,一步步教你如何将系统完整还原至出厂状态,确保所有硬件驱动、NITROSENSE控制中心等专属优化功能恢复正常,解决系统卡顿、功能异常等问题。

weixin_29271263的博客 1103

DELL服务器BIOS下配置RAID阵列

dell服务器配置raid阵列

weixin_58250887的博客 1万+

JAVA 用户登录图形验证码

摘要: 由于公司需要做一个监控系统,然后需要一个简单的登录页面,所以就需要一个简单的登录并需要验证,所以就在网上查了一下简单的验证码制作,废话不多说,代码如下: 1.pom引用 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version>

DreamWeaver_Zhou 1866

把外部系统一键装进 SAP Build Work Zone:从零开始创建 HTML5 URL App

HTML5 URL App 是一种轻量级解决方案,可将外部网页或系统入口快速集成到SAP企业门户中。开发者只需在manifest.json中配置目标URL、导航模式等参数,无需开发完整前端应用。该方案利用SAP BTP的HTML5 Application Repository集中存储静态资源,通过HTML5 Apps Content Provider将应用暴露给子账号,最终在SAP Build Work Zone中以Fiori磁贴形式呈现。文章详细介绍了manifest.json的关键配置、三种基础设施组件

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 243

java图形验证码实现

java图形验证码实现

技术宅,专注云原生、Go、Linux、Java等技术分享,原创文章、效率工具、实战解决方案!关注我,了解互联网动态,学 IT 不迷路 1059

LeRobot 官方论文:一个用于端到端机器人学习的开源库

本文介绍了一个名为LeRobot的开源库,旨在解决机器人学习领域的碎片化问题。该库提供了端到端的技术栈,包括统一的机器人中间件API、标准化的数据集格式(LeRobotDataset)、优化的推理栈以及多种最先进机器人学习算法的实现。LeRobot支持多种低成本开源机器人平台(如SO-10X、ALOHA-2等),通过共享中间件实现便捷的遥操作和数据收集。其数据集格式已广泛应用于社区,截至2025年9月已有16,000多个数据集公开共享。该库还支持流式处理大规模数据,降低了研究门槛。在模型方面,LeRobot

2506_90492529的博客 907

终于找到两个稳定好用的Docker镜像加速源,拉取速度提升几十倍!

国内使用Docker经常遇到镜像拉取慢、超时失败的问题🐳 本文分享两个亲测好用的免费镜像加速源⚡ 实测拉取速度从十几分钟缩短到几十秒,稳定性接近100%📊 支持一键配置脚本,支持多平台使用✨

XiaoqiangClub的博客 954

详解如何实现图形验证码

详细讲解图形验证码,包括线段干扰验证码,圆圈干扰验证码,扰乱干扰验证码,以及使用线段干扰验证码实现登录验证。

. 1万+

零基础入门转录组数据可视化——绘制差异小提琴图(常规)

转录组数据可视化之一,先介绍相关基础知识,其次用实际案例为基础,由浅入深介绍差异小提琴图绘制的全过程,包括内容有相关代码和截屏。

呆猪儿的博客 637

Java web--生成图形验证码

验证码就是在用户界面上以图形的方式显示的一些符号,通常有字母、汉字或数字组成的一个随机字符串。

qq_43238335的博客 784

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java 图形验证码的生成和验证

1. 导入第三方包,主要用来生成图形验证码 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>4.6.8</...

robinson_911的专栏 4141

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java图形验证码如何生成_Java 图形验证码的生成和验证

1. 导入第三方包,主要用来生成图形验证码cn.hutoolhutool-all4.6.82. 获取生成的图形验证码图片流,验证图片验证码package com.JXWorkApi.controller;import cn.hutool.captcha.CaptchaUtil;import cn.hutool.captcha.ShearCaptcha;import com.JXWork.resul...

weixin_30599809的博客 1149

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java图形验证码生成源码解析

本文详细分析了一个Java图形验证码的实现代码,包含ValidateCode和ImgFontByte两个类,展示了如何通过AWT生成带干扰线的随机字符验证码,并结合JSP页面实现前端展示与刷新功能,适用于Java Web项目中的登录安全防护。

weixin_36303305的博客 1298

Linux(CentOS)Java web项目中文图形验证码无法生成的问题

做项目的过程中遇到了验证码死活出不来的问题,浏览生成验证码的代码发现里面用到了“宋体”的字样,而CentOS默认是没有宋体的,安装字体后问题解决。写个小博客,给遇到相同问题的同学们提供一个思路。一般的验证码插件需要用到中文字体来绘制验证码,如下面的一个利用中文成语生成验证码的程序,代码片段“graphics2d.setFont(new Font("宋体", Font.BOLD, 18));”,而C...

javae100的博客 2864

Java实现多类型图形验证码生成

本文介绍了一个基于Java的图形验证码工具类,支持静态、动态和3D中空等多种样式。通过随机字体、颜色、干扰线及扭曲处理,有效防止OCR识别和机器人破解,适用于登录、领券等不同场景。

weixin_29215509的博客 1082

java前后端分离怎么生成图形验证码

1.maven中引入commons-codec.jar <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </depend...

qq_35137375的博客 2213

java 中生成图形验证码

  图片验证码的实现主要的技术点是如何生成一个图片。生成图片可以使用java.awt包下的类来实现。我们先写一个简单的生成图片的程序HelloImage.java。以下是代码部分。import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.Fi

hakunamatata2008的专栏 1254

Java图形验证码生成工具

基于Java实现的图形验证码工具,支持随机字体、颜色、干扰线和扭曲效果,可生成静态或动态GIF验证码,有效防止OCR识别与机器人攻击。

weixin_42186015的博客 1653
上一篇: Java Web实践专题——MD5加密
下一篇: Java Web实践专题——图片管理
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值