<%@page import="java.io.OutputStream"%>
<%@ page contentType="image/jpeg" pageEncoding="GBK" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
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);
}
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=56, height=20;
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("Courier New", Font.PLAIN, 18));
//画边框
//g.setColor(new Color(55,55,55));
//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(10),20+random.nextInt(110),20+random.nextInt(210)));
//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand, 13*i+3, 16);
}
String sessionName = request.getParameter("VIName");
// 将认证码存入SESSION
if(sessionName==null) sessionName = "";
session.setAttribute("will_session_randCode_"+sessionName, sRand);
// 图象生效
g.dispose();
// 输出图象到页面
OutputStream os = response.getOutputStream();
ImageIO.write(image, "JPEG", os);
os.flush();
os.close();
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
%>
分享到:
相关推荐
java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java 验证码工具类java 验证码工具类 java 验证码工具类 java ...
CaptchaUtil 是 Java 语言封装的一个用于生成验证码的工具类,支持多种字体、干扰线、圈圈等作为背景,方便实用。
验证码生成工具类是一种在Web应用中广泛使用的安全机制,它主要用于防止自动化的恶意操作,比如机器人注册、垃圾邮件发送等。这个工具类是用Java语言编写的,因此我们可以深入探讨一下Java验证码生成的相关技术和...
java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码工具类java 验证码...
这个识别引擎就是专门用来自动解析这类验证码的工具。 Delphi中的数字识别技术通常涉及到图像处理和模式识别。首先,源码可能会包含对图像的预处理步骤,如灰度化、二值化、噪声消除等,这些操作有助于简化图像并...
本项目"OrcValidateCode_验证码识别_"是基于Java实现的OCR(Optical Character Recognition,光学字符识别)验证码识别工具,它结合了图像处理和百度API调用来提升识别率。以下是关于这个项目的详细知识点: 1. **...
总的来说,ASP.NET和C#为我们提供了丰富的工具和类库,使得创建验证码变得相对简单。通过理解和实践这些知识点,开发者可以为Web应用构建起一道有效的安全防线。在实际应用中,还可以根据需要进一步优化验证码的生成...
"纯Java验证码工具类" 提供了一种简便的方法来生成这种安全机制,无需依赖其他语言或库。这个工具类可以被轻松地集成到任何Java项目中,为你的应用程序添加一道防线。 验证码生成通常包括以下几个关键步骤: 1. **...
可以通过调用此工具类来轻松实现验证码
在IT行业中,工具类(Tool Class)和验证码(CAPTCHA)是两个重要的概念,它们分别在软件开发的不同方面发挥着关键作用。 首先,我们来详细探讨工具类。工具类是一组静态方法的集合,通常不包含任何实例变量,因为...
综上所述,这个MFC程序是一个用于验证ISBN码的实用工具,它利用了MFC提供的类库和组件,提供了友好的用户界面,以及严谨的ISBN码验证算法,确保了数据的准确性。对于学习MFC编程和了解ISBN验证逻辑的开发者来说,这...
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
在登录页面 验证码 登录 封装好的工具类,直接 src 引入 放在 utils 工具类里面
验证码在Web开发中扮演着...总之,"verifys_php验证码类_源码"是一个实用的工具,它帮助开发者快速搭建适应项目需求的验证码系统。通过深入理解和自定义这个类,你可以创建出既安全又符合用户体验的验证码解决方案。
该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。
"SmsUtil.zip" 是一个包含阿里大于短信服务API的Java工具类,可以帮助开发者快速集成短信发送功能。下面,我们将深入探讨这个工具类以及相关知识点。 1. **阿里大于短信平台** 阿里大于(现更名为阿里云通信)是...
本资源提供了两种实现方式:基于Servlet和Struts2(Action)的验证码工具类。以下是对这两个版本的验证码工具类的详细解释。 ### Servlet版验证码工具类 1. **验证码生成**: Servlet版本的验证码工具类通常会...
MATLAB作为一种强大的数学计算和数据分析工具,也可以用于处理图像识别任务,包括验证码的解析。 首先,我们需要了解MATLAB中的图像处理基础。MATLAB提供了`imread`函数来读取图像,例如这里的`s1.bmp`到`s9.bmp`...
图片验证码生成工具类