【JavaWeb】实现网页验证码

JavaWeb 实现网页的验证码 首先在main文件夹中创建一个java文件夹标记为源码根,在java文件夹内创建包,在刚刚创建的包中创建一个名为 CaptcheController的java类。如图所示: 2.打开我们前面创建的名为CaptcheController的java类,并重写service方法,再自构建一个generatePic的BufferedImage类。之后就是写代码了。 代码: pac... 阅读详情

导读:常用的验证码有文本+数字,或者是算式验证码。可以自己编写,来生成验证码。亦或是使用第三方库,来生成验证码。


字母数字验证码

实现形如下图的验证码:

                                                                

编写一个验证码生成类,首先写一个产生随机字符的方法:

public class CaptchaCode {
    private static char randomChar(){
        String string="QWERTYUIOPASDFGHJKLZXCVBNM1234567890";
        Random random=new Random();
        return string.charAt(random.nextInt(string.length()));
    }
}

然后写一个生成验证码图片的方法:

    public static String drawImage(HttpServletResponse response){
        //1.拼接字符串的类
        StringBuilder builder=new StringBuilder();
        //产生4位验证码
        for (int i = 0; i <4 ; i++) {
            builder.append(randomChar());
        }
        String code=builder.toString();
        //2.定义图片的宽度和高度
        int width=120;
        int height=25;
        //建立BufferedImage对象,指定图片缓冲流的长宽度和样式
        BufferedImage bi=new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
        //3.获取Graphics2d绘制对象,开始绘制验证码。图片最终会注入到缓冲流中
        Graphics2D graph=bi.createGraphics();
        //4.设置字体和大小
        Font font=new Font("宋体",Font.PLAIN,20);
        Color color=new Color(0,255,255);
        graph.setFont(font);
        graph.setColor(color);
        graph.setBackground(new Color(0,0,0));
        //绘制形状,一般是矩形
        graph.clearRect(0,0,width,height);
        //创建字体对象
        FontRenderContext context=graph.getFontRenderContext();
        //获得文字的边界
        Rectangle2D bounds=font.getStringBounds(code,context);
        //计算坐标和间距,以便字体放在矩形的正中央
        double x=(width-bounds.getWidth())/2;
        double y=(height-bounds.getHeight())/2;
        double acsent=bounds.getY();
        double baseY=y-acsent;
        //在矩形中绘制字体
        graph.drawString(code,(int)x,(int)baseY);
        graph.dispose();
        //保存到响应的输出流
        try {
            ImageIO.write(bi,"jpg",response.getOu
javaWeb通过验证码的使用实现简单登录 使用验证码的简单登录 阅读详情

相关推荐

JAVA实现验证码(完整代码)

JAVA实现验证码(完整代码),一个完整地验证码例子。

javaWeb使用验证码实现简单登录

主要为大家详细介绍了javaWeb使用验证码实现简单登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

FANUC机器人电弧跟踪功能深度解析:从电流采样原理到ROBOGUIDE仿真避坑指南

本文深度解析FANUC机器人电弧跟踪技术,从电流采样原理到ROBOGUIDE仿真避坑指南,详细介绍了电流波形分析、实时补偿机制及现场调试技巧。针对工业焊接中的常见问题,提供从底层原理到高阶应用的解决方案,帮助工程师优化自动化焊接质量。

weixin_31785177的博客 548

打穿内网之Vulntarget-a靶场实战记录

内容包括:通达OA未授权上传+文件包含RCE、Redis未授权写马、ms17-010永恒之蓝、代理转发内网跳板、CVE-2020-1472 域控杀器Zerologon、wmiexec/smbexec横向移动、cobalt strike与msf的shell传递

tpaer的博客 3031

C# 操作Excel的时候,出现"被呼叫方拒绝接受呼叫的异常"的解决方案(参考官方给出的解决方案)

首先官方有对这个错误给出解释和解决方案,连接如下: https://docs.microsoft.com/zh-cn/previous-versions/ms228772(v=vs.120)#%E5%8F%AF%E9%9D%A0%E7%BC%96%E7%A8%8B 简单来说,貌似是线程问题,我猜。。。 之前我尝试着在代码中添加 Thread.Sleep(1000); 来进行解决,这种办...

Ck_Max的博客 5767

长短期记忆网络(Long Short-Term Memory networks, LSTM)

如何简单的理解LSTM——其实没有那么复杂:

weixin_39910711的博客 2万+

YOLOv11涨点改进 | 全网独家创新,注意力改进篇 | TGRS 2025 | 引入APCM自适应像素级协同机制,动态增强目标区域、抑制背景噪声,助力YOLOv11做红外小目标检测有效涨点

本文提出了一种基于APCM模块改进的YOLOv11网络模型,通过像素级局部-全局协同建模增强目标特征并抑制背景噪声。APCM模块采用轻量化设计,无需复杂参数,能有效提升小目标检测性能。文章详细介绍了APCM的原理、优势及其在红外小目标检测中的应用,包括模块结构、核心代码实现和YAML配置文件修改方法。实验结果表明,该方法在NUAA-SIRST和IRSTD-1K数据集上优于现有技术,显著提高了复杂场景下的检测精度与鲁棒性。

Ai缝合怪、助力小伙伴高效发论文 115

【网络与爬虫 53】Scrapy-Prometheus实战指南:打造企业级爬虫监控体系的终极解决方案

本文深入探讨Scrapy-Prometheus集成技术,通过费曼学习法从监控痛点出发,详细讲解如何在Scrapy爬虫中集成Prometheus指标收集系统。涵盖从基础配置到企业级监控体系的完整实战指南,帮助开发者构建可观测性强、可维护性高的分布式爬虫监控平台,实现爬虫性能的精准监控和智能告警。

熵数实验室 1584

【NLP】第十五章:隐马尔可夫——前向算法、后向算法、维特比算法、Baum-Welch算法

就是好比我现在知道了观测序列Observations、掩藏序列States,我试着去学一个最优的(π, A, B),让在这个(π, A, B)下,观测序列Observations、掩藏序列States的概率最大。(2)矩阵B就更好理解了,矩阵B的第一行表示我已经抽取的是盒子1,那我抽取白球的概率就是0.4,抽取黑球的概率就是0.6了,因为第一个盒子只有4白6黑嘛。三是,由于每次抽取的小球的颜色的概率不仅取决于,小球所在的盒子中的黑白球的比例,还取决于你是从哪个盒子中抽的,所以其实观测序列还对应着一个。

因为热爱所以坚持 1162

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 【JavaWeb】用监听器实现单一登录
下一篇: 【Hexo】yilia主题 添加 Subnav 社交图标 优快云 STEAM PSN等等
csdn_inside
博客等级 码龄10年 52粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值