java 生成验证码

Java生成图片验证码 通过原生Java实现验证码的生成 前言:要看懂本文,你至少得会一些基础JavaScript,JavaWeb,JSP才可以。 1、图片验证码生成的工具类(生成的验证码为字母和数字的随机组合,区分大小写) import java.awt.*; import java.awt.image.BufferedImage; import java.util.Random; /** * 验证码生成器 */ public class VerificationCodeGenerator { //图片宽 阅读详情

1、效果图

2、struts2中 java代码

package com.jst.common.web;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.ActionSupport;
/**
 * 验证码生成action
 * @author amadowang
 *
 */
public class VerifyCodeAction extends ActionSupport implements
		ServletRequestAware, ServletResponseAware {
	private HttpServletRequest request;
	private HttpServletResponse response;

	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response = response;
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}
	@Override
	public String execute() throws Exception {
		response.setContentType("image/jpeg");
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		HttpSession session = request.getSession();
		// 在内存中创建图象
		int width = 70, height = 23;
		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		// 获取图形上下文
		Graphics g = image.getGraphics();
		// 生成随机类
		Random random = new Random();
		// 设定背景色
		g.setColor(getRandColor(200, 250));
		g.fillRect(0, 0, width, height);
		// 设定字体
		g.setFont(new Font("Times New Roman", Font.PLAIN, 24));
		// 画边框
		g.setColor(getRandColor(160, 200));
		g.drawRect(0, 0, width - 1, height - 1);
		// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
		g.setColor(getRandColor(160, 200));
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			g.drawLine(x, y, x + xl, y + yl);
		}
		// 取随机产生的认证码(4位数字)
		String sRand = "";
		for (int i = 0; i < 4; i++) {
			String rand = String.valueOf(random.nextInt(10));
			sRand += rand;
			// 将认证码显示到图象中
			g.setColor(new Color(20 + random.nextInt(110), 20 + random
					.nextInt(110), 20 + random.nextInt(110)));
			// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
			g.drawString(rand, 13 * i + 14, 20);
		}

		// 将认证码存入SESSION
		session.setAttribute("verifyCode", sRand);

		// 图象生效
		g.dispose();
		// 输出图象到页面
		ImageIO.write(image, "JPEG", response.getOutputStream());
		return null;
	}

	private Color getRandColor(int fc, int bc) {// 给定范围获得随机颜色
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}
}


3、jsp代码

<div class="weib">
					<span><p>用户名:</p> 
						<s:textfield name="user.userCode" cssClass="text1"></s:textfield></span>
					<span><p>密  码:</p>
						<s:password name="user.password" cssClass="text1"></s:password></span>
					<span><p>校验码:</p>
						<input name="verifyCode" id="verifyCode" type="text" class="text1" />
						<em><img border=0 src="system/verifyCode.action"></em></span>
				</div>


4、struts2.xml配置文件

<struts>
	<package name="default" namespace="/system" extends="struts-default">
		<!-- 验证码 -->
		<action name="verifyCode" class="com.jst.common.web.VerifyCodeAction">
		</action>
	</package>
</struts>

技术交流群(点击下方图片加入)

JAVA/A

半导体设备微振动控制:天棚阻尼PID与SIMULINK建模实战 半导体制造设备对微振动的敏感度已进入纳米级,光刻机、量测设备等一旦遭遇超过VC-C振动准则的扰动,便会出现套刻误差或检测误判。主动隔振技术通过传感器、控制器与执行器形成闭环,能有效抑制低频共振,其中天棚阻尼控制因物理概念清晰、鲁棒性强而成为工程首选。结合MATLAB/SIMULINK建模,可在设计阶段完成系统性能边界评估与参数整定,再通过C代码生成与FMU导出实现算法向控制器和跨平台仿真迁移。本文从VC-C指标拆解出发,依次讲解天棚阻尼PID控制原理、两自由度被控对象建模、控制增益估算、仿真验证方法,并给出 阅读详情

相关推荐

Cortex-M内核DWT周期计数器:从原理到STM32实战时间测量与性能分析

在嵌入式开发中,代码执行耗时测量是性能优化的基础。除了依赖外设定时器或SysTick,ARM Cortex-M3/M4/M7内核自带的DWT(Data Watchpoint and Tracker)调试组件提供了一种极低侵入性的硬件计时方案。其内部的32位周期计数器CYCCNT跟随内核时钟递增,无需占用额外引脚或定时器资源,即可实现纳秒级分辨率的函数耗时测量、中断响应分析及延时实现。从DWT寄存器配置、周期差值计算到基于SystemCoreClock的微秒换算,开发者可以快速搭建一套轻量级性能分析工具。本文

weixin_34216614的博客 183

JAVA—生成验证码的两种方法(代码+运行结果+总结)

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的

m0_61120771的博客 2万+

CentOS7 安装天气分型软件cost733过程详解

cost733是一款天气分型软件,其内置的一些算法可以帮助气象工作者进行天气类型划分等(我也是初学者,仅仅知道一些皮毛),但是网上找到的安装办法比较少,并且总会出现一些报错,试了一晚上,终于将安装办法调通了,希望可以帮助到大家

weixin_62573024的博客 3561

java中生成验证码

java利用awt包生成验证码

weixin_53830969的博客 941

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

从Delta Delay到Timing Window:详解数字芯片后端时序差异的那些坑

本文深入剖析了数字芯片后端设计中,模块级与系统级时序分析结果不一致的核心原因。重点解释了Delta Delay如何导致模块级分析的乐观假设,以及Timing Window(时序窗口)差异如何通过影响串扰噪声计算,在顶层集成时引发新的时序违例,尤其是保持时间问题。文章为工程师提供了从约束建模到签核策略的系统性应对方案。

beer8的博客 498

SSH之验证码程序实现【详细教程】

验证码:【科普】 主要是为了减少恶意的行为发生! 因为现在营销里面有个网络暴力营销行为,就是自动在网上找一些能注册的论坛或者留言板什么的,自动注册,然后发一些广告,这样造成很多垃圾信息,网站为了减少这种现象发生,就出现了验证码,因为这个码是随机生成的,所以软件不可能自动识别,不能识别也就不能发送信息!只有真正的人类才能操作,所以可以有效的防止某些恶意的行为,在开发过程中验证码可能也是一...

**My Coding Family** 1万+

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月12日-生产期间维护用的双重隔离

生产期间维护用的双重隔离。该程序用于准备将一个或多个双工位设置为维护状态,同时SABRE 3D/3DxT/3D Scimitar保持生产运行。其目的是在不中断生产的情况下将双工位与运行中的设备隔离。

weixin_46735260的博客 574

Java 生成验证码的五种方式、源码、过程、结果

使用Java基本的逻辑和方法生成所需要的验证码,且生成的验证码包含大小写字母和数字,当然啦,也有纯数字的验证码。每一个方式都有详细的注释解析😆😆😆第一种方式 Random随机数类生成验证码第一种方式,是在main方法中生成的验证码,想要获取最终结果的小伙伴,可以把最后的for循环删除,然后把里面的代码提取成一个方法哦😊😊😊运行结果第二种方式 洗牌算法实现验证码这种方式实现的验证码很新奇,基本是不常见的验证码,会发现他生成的验证码出奇的乱,很少见😁😁😁运行结果。

回忆在这里记录着 6864

【问题解决】解决 Python `PermissionError` 权限不足:文件/进程/端口全场景修复

本文总结了Python程序中常见的权限问题及解决方案,包括文件、进程和端口权限错误。文件权限问题通常由文件占用、权限不足或路径错误引起;进程问题多因权限不足或系统限制;端口问题则与端口占用、防火墙或特权端口相关。解决方案提供了详细的代码实现:文件权限管理器类(FilePermissionManager)包含检查权限(check_permission)、修复权限(fix_permission)、安全写入(safe_write)和安全删除(safe_delete)等方法,通过异常处理和临时文件等技术确保操作安全

博客 357

java技术专家【面试】Java程序员英语面试整个流程

java技术专家【面试】Java程序员英语面试整个流程

大壮 751

java如何编写生成验证码

/直接将字符数组作为参数构造String对象;4.把字符串变成字符数组,在字符数组中生成一个随机索引,再拿着4索引上的数字跟随机索引上的数字进行交换。//在字符数组中生成一个随机索引,然后拿着4索引上的数字跟随机索引进行交换。2.再利用Random类通过集合中的随机索引获取4个字母拼接成字母串。3.再利用Random类在数字0-9中随机一个数字拼接到字符串后面。//在字符串后面添加一个随机数字0-9。5.把字符数组再变回字符串。//把字符数组再变成字符串。//把字符串变成字符数组。//生成4个随机字母。

m0_71533584的博客 1939

多组学联合高级Mantel-test热图

对应的是「metabo」中物质间的相关性热图,单元格色块颜色表示相关系数大小,橙色表示+相关,绿色表示-相关;单元格内的数值表示相关性值大小,星号表示显著性。双组学(微生物组/ 转录组/代谢组等两两组合)关联分析,可视化组学特征间的关联显著性、强度及相关方向。表示<trans>与<metabo>中物质的Mantel test结果。表示整体相关的系数,连线颜色表示相关系数的显著性检验结果。宿主-微生物互作、疾病多组学机制、环境-生物多组学关联。为物质名称,不允许存在空值、重复值。

多组・学・多组学 360

java生成验证码登录,生成验证码

这里写了一个生成验证码的demo 前台可以访问该servlet页面显示验证码 验证码 后台存的session名称为vCode 判断验证码是否正确时可以直接调用 前台通过 这里你就自己引入jq吧 <img src="ValidateCodeServle" id="src"> <a onclick="code()">看不清楚,换一张</a> <script...

不负好时光的博客 1109

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

温度PID控制PLC程序

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

java 验证码生成_Java生成验证码并进行验证

一、实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet中的代码如下:package org.test;...

weixin_31067561的博客 1054

OV9734 DATASHEET,完整规格书

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

Java 生成 验证码图片

如何用JAVA生成随机验证码图片

刘伟佳的博客 9371

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java生成图形验证码

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 首先,需要生成验证码字符串,方式很多,下面提供一种,根据指定源的方式来生成验证码 /** * 使用系统默认字符源生成验证码 * * @param verifySize * ...

孤云博客 4981

java 生成校验验证码_java生成验证码并进行验证

一实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet中的代码如下package org.test;im...

weixin_35143292的博客 1216

java程序生成验证码

java程序生成验证码 验证码工具类 package cn.mldn.lxh.xmz.common; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOExceptio

weixin_43477950的博客 371

Java 实现生成验证码以及验证

代码包含生成验证码,验证验证码,以及验证码的失效时间 标题代码包含生成验证码,验证验证码,以及验证码的失效时间生成验证码和验证验证码的Controller生成验证码类 生成验证码和验证验证码的Controller package com.example.security.zmain.generateImg; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.a

WXN的博客 1012

Java随机生成验证码

/1.可以把所有的大写字母,小写字母都放到一个数组当中。内容:可以是小写字母,也可以是大写字母,还可以是数字。//在ASCII码表中A---65。//再让最后一个元素跟前面的随机位置的元素进行交换。其中数字只有1位,但是可以出现在任意的位置。//思考,我们把7放到前面,修改了字符串的内容。//3.生成一个0~9之间的随机数拼接到最后。//交换完毕之后再变成字符串就可以了。//把生成的验证码先变成一个字符数组。//利用ASCII码表。//2.从数组中随机获取4次。//定义方法将数字放置在随机位置中。

weixin_72700368的博客 2167

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

Java 后台生成验证码

Java 后台生成图片验证码 开发工具与关键技术:java、 elipse2019、jdk1.8 作者:Amewin 撰写时间:2019年8月17日 介绍 由于很多是时候,我们需要在后台生成验证码,用于前台登陆使用,之所以为什么写在后台是因为相对于前台 生成较于安全。 验证码这块 我在Web ASP.NET 也有所涉及,在这里,我只提供工具类,相关的调用请自行结合框架使用。 /** ...

Amewin的博客 1078

java生成验证码工具类_Java生成图形验证码工具类

生成验证码效果ValidateCode.java 验证码生成类package cn.dsna.util.images;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.FileOutputStream;imp...

weixin_33640562的博客 693

Java生成验证码图片

 Java生成验证码图片网络上存在的两种生成验证码的方法:1. ImageIO.write(); ImageIO.write(image4, "PNG", out); 缺点:太慢,生成很小的图片,需要800-2000毫秒;2. JPEGImageEncoder encoder.encode();//        JPEGImageEncoder encoder = JPEGCodec.cre

bohemia的专栏 4989

Java图片验证码简单生成

生成验证码图片主要通过Java AWT中的Graphics对象画图操作,实际操作中,Controller接口可以接收前端随机参数,并保存该参数和生成的验证码的缓存关系,当提交表单时,用于校验表单中的随机码和验证码。 下面通过单元测试简单调试验证码图片的生成。 package com.study.demo.util; import org.junit.Test; import javax.ima...

小熙的博客 5万+
上一篇: Oracle rman 自动清理归档日志
下一篇: 跨站点请求伪造 跨站点脚本编制 通过框架钓鱼漏洞
javaee_ssh
博客等级 码龄18年 42粉丝 42原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值