package com.cqjd.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import javax.imageio.ImageIO;
public class RndImage {
//定义随机字符串
private static char mapTable[] = { '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' };
/*获取随机字符串*/
public static String random() {
String str = "";
// 5代表5位验证码,如果要生成更多位的认证码,则加大数值ֵ
for (int i = 0; i < 5; ++i) {
str += mapTable[(int) (mapTable.length * Math.random())];
}
return str;
}
/*获取随机颜色对象*/
public static Color getRandomColor() {
Color col = null;
Random rnd = new Random();
col = new Color(rnd.nextInt(180), rnd.nextInt(180), rnd.nextInt(180));
return col;
}
/* 将随机字符串转换成图像到写入流:
* num:随机字符串
* out:输出流
* width:图片宽度
* height:图片高度
*/
public static void imageOut(String num, OutputStream out, int width,
int height) throws IOException {
// 定义缓冲区图像 rndImg
BufferedImage rndImg = null;
rndImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//定义二维图像画笔对象 g
Graphics2D g = (Graphics2D) rndImg.getGraphics();
//设置矩形填充颜色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
//设置显示字体及字体类型与大小
Font mFont = new Font("Tahoma", Font.BOLD, height * 3 / 4);
g.setFont(mFont);
g.setColor(Color.BLACK); //设置默认字体颜色
String str1[] = new String[5]; //定义存放5个单元的的字符串数组
for (int i = 0; i < str1.length; i++) {
// 绘制验证码字符
str1[i] = "" + num.charAt(i);
g.setColor(getRandomColor());
g.drawString(str1[i], 15 * i + 5, height * 4 / 5);
}
// 设置干扰线
g.setColor(Color.LIGHT_GRAY);
Random random = new Random();
for (int i = 0; i < 40; i++) {
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
int x2 = random.nextInt(10);
int y2 = random.nextInt(10);
// 在点(x1, y1)与点(x1 + x2, y1 + y2)֮之间画一条直线
g.drawLine(x1, y1, x1 + x2, y1 + y2);
}
// 绘制外框线
g.drawRect(0, 0, width - 1, height - 1);
// 释放画笔
g.dispose();
// 将一个图像写入OutPutStream
//rndImg-要写入的图片缓冲区对象:"jpg"-图像格式
// out-将在其中写入数据的 OutputStream
// 将内存图像写出到输出流
ImageIO.write(rndImg, "jpg", out);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
彩色验证码: 1.原理:随机生成一个包含字符串的图片,用户读取图片中的字符信息,将其输入到指定文本框中,随着登录或者注册功能的提交将其传递给服务器进行验证处理。 2.作用:防止通过程序进行批量注册或者暴力破解程序登录 3.实现步骤: ①编写验证码生成工具类,在此类中首先随机获取字符串,然后再将字符串转换成图片 ②向客户端输出验证码图像,并将对应的验证码字符串保存到session中,然后在登录或者注册页面中通过 <img src="servlet或者jsp程序"/>标签加载图像,然后用户根据图像在文本框中输入对应的验证码字符串 ③获取用户输入的验证码字符串,并与session中保留的验证码字符串进行比较
资源详情
资源评论
资源推荐
收起资源包目录
彩色登录验证码及刷新.zip (58个子文件)
彩色登录验证码及刷新
news
WebContent
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 2KB
lib
commons-beanutils-1.9.3.jar 240KB
jackson-databind-2.8.10.jar 1.19MB
ezmorph-1.0.6.jar 84KB
commons-collections-3.2.1.jar 562KB
commons-io-2.7.jar 270KB
standard.jar 384KB
jackson-core-2.8.10.jar 276KB
mysql-connector-java-8.0.15.jar 2.04MB
jackson-annotations-2.8.0.jar 54KB
commons-dbutils-1.7.jar 95KB
servlet-api.jar 238KB
c3p0-0.9.5.2.jar 486KB
commons-dbcp2-2.7.0.jar 204KB
jstl.jar 20KB
mchange-commons-java-0.2.11.jar 592KB
commons-pool2-2.8.0.jar 127KB
jstl-1.2.jar 405KB
commons-logging-1.2.jar 60KB
commons-lang-2.5.jar 273KB
json-lib-2.4-jdk15.jar 155KB
commons-fileupload-1.3.3.jar 69KB
js
jquery-3.6.0.js 282KB
login.jsp 1KB
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 305B
org.eclipse.wst.common.component 464B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 567B
org.eclipse.jdt.core.prefs 364B
src
com
cqjd
servlet
ValidateNumberServlet.java 2KB
util
RndImage.class 3KB
RndImage.java 3KB
.project 904B
.classpath 2KB
build
classes
com
cqjd
dao
UserDao.class 5KB
test.class 263B
filter
LoginFilter.class 2KB
EncodeFilter.class 1KB
test
test.class 1KB
pojo
Video.class 2KB
Picture.class 2KB
User.class 2KB
Comment.class 2KB
Column.class 1KB
News.class 3KB
Page.class 2KB
Wall.class 1KB
servlet
LoginServlet.class 2KB
ValidateNumberServlet.class 1KB
RegisterServlet.class 2KB
service
UserService.class 3KB
util
DataSourceUtils.class 742B
DBUtil.class 2KB
MD5Tool.class 2KB
RndImage.class 3KB
c3p0-config.xml 401B
共 58 条
- 1
微风仰望
- 粉丝: 5
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 上市公司-人工智能的采纳程度面板数据(2003-2021年).xlsx
- 第5章spring-mvc请求映射处理
- 2023-04-06-项目笔记 - 第一百十六阶段 - 4.4.2.114全局变量的作用域-114 -2024.04.27
- app-release.apk.1
- soap json 等系列化方式
- c++的五子棋代码,在vs6.0上完美运行
- 基于Javaee的影视创作论坛的设计与实现.rar
- Python导出Mysql数据字典(部分表或全表)
- Java工具类实现输入一个路径,强创建路径、并且鉴权目标路径是否具备修改权限,用于增强程序的健壮性与稳定性,快速开发!
- 资源【STM32+HAL】三轴按键PS2摇杆
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0