<%@ page contentType="image/jpeg" 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=60, 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("Times New Roman",Font.PLAIN,18));
//画边框
//g.setColor(new Color());
//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+6,16);
}
// 将认证码存入SESSION
session.setAttribute("rand",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
分享到:
相关推荐
总的来说,JSP生成的数字验证码结合了Java的强大功能和网页的交互性,提供了一种简单而有效的用户验证方法。在开发过程中,确保验证码的安全性和用户体验是至关重要的。通过对验证码的不断刷新和复杂化设计,我们...
1. **生成随机字符串**: - 在Java中,`java.util.Random` 类可用于生成随机数,我们可以基于这个类创建一个包含字母和数字的随机字符串。例如,我们可以设定字符串长度为4,包含大小写字母和数字,这样生成的...
1. **生成随机字符串**:首先,我们需要在服务器端生成一个随机字符串,通常包含4-6个字母或数字。这可以通过Java的`Random`类和`StringBuilder`类实现。 2. **绘制验证码图像**:使用Java的`Graphics2D`类来绘制...
// 生成随机字符串并绘制到图片上 g.drawString(getRandomString(request), 5, 20); // 清理资源 g.dispose(); bi.flush(); // 输出流 OutputStream outPut = response.getOutputStream(); ...
在这个特定的案例中,我们讨论的是如何使用JSP生成图片验证码,这是一种常见的安全机制,用于防止自动机器人或恶意用户进行非法操作。 验证码的主要目的是验证用户是否为真实的人,而不是机器。它通常是一串随机...
在这个"JSP生成彩色验证码程序例子"中,我们将深入探讨如何利用JSP实现一个功能丰富的彩色验证码生成器。 验证码的主要目的是为了防止自动机器人或恶意脚本进行非法操作,例如防止垃圾邮件、注册机等。它通过显示一...
验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们不是计算机程序。这样,只有人类能够完成验证,而机器由于无法识别图片中的文本,因此无法自动完成任务。 在JSP...
以上就是使用JSP生成验证码图片的基本原理和实现流程。在实际应用中,还可以结合其他安全措施,比如限制用户尝试次数、使用滑动验证等,进一步提高系统的安全性。同时,随着技术的发展,验证码的形式也在不断进化,...
以上就是使用JSP生成数字验证码图片的基本流程。在实际应用中,可以根据需求进行优化,例如增加字母、大小写字母,或者使用更复杂的噪声模式。通过这种方式,我们可以创建出一个既安全又易于集成的验证码系统,有效...
### JSP生成文字验证码知识点详解 #### 一、概述 本文档主要介绍了一种使用Java Server Pages(JSP)技术生成文字验证码的方法。验证码是一种防止机器自动填写表单的有效手段,广泛应用于用户登录、注册等场景,以...
### 如何使用JSP生成彩色汉字验证码的源码详解 #### 概述 在网站的安全验证环节中,验证码是常见的防止机器自动填写表单的一种手段。本文将详细介绍如何使用Java Server Pages (JSP) 技术来生成彩色的汉字验证码。...
1. **生成随机数字**:在服务器端,我们需要一个函数来生成4个随机数字。这可以通过Java的`Random`类来完成,生成指定范围内的整数。 2. **绘制数字图像**:使用Java的图形库(如`java.awt`和`javax.imageio`),...
3. **文件名重命名**:为上传的文件生成随机或唯一的新名称,防止文件覆盖或恶意利用已知文件名进行攻击。 4. **安全性扫描**:可以使用安全检测工具,如"扫描SQL注射与XSS攻击的牛B工具.exe",对上传的文件进行检查...
验证码是一种安全机制,它要求用户输入显示在图片中的随机字符,以验证用户是真实的人而不是自动化程序。以下是一个简单的Java验证码生成的实现,包括了四个随机数字和杂乱背景的图片生成过程: 1. **设置页面类型...
- 定义了一个方法`getRandColor`用于生成随机颜色,通过给定的前背景色范围来创建颜色对象。 - 设置HTTP响应头,确保图像不会被浏览器缓存,以防止重复使用同一张验证码图片。 - 创建一个60x20像素大小的`...
2. **抽奖逻辑模块**:这是程序的核心,负责生成随机结果。Java提供了`java.util.Random`类来生成随机数,开发者可以根据具体需求设定抽奖规则,如概率分配、限制次数等。 3. **数据库交互模块**:存储和管理参与者...
在JSP中,可以结合Servlet和Java图形库(如Java2D)生成随机的字符组合,并将其转化为图片。服务器端会存储这个随机字符串作为用户输入验证的参考,客户端则显示图片并让用户输入看到的验证码。图片的刷新可以通过...
- **随机数生成**:在JSP中,我们可以使用`java.util.Random`类来生成随机整数,作为验证码的数字部分。 - **图像创建**:使用Java的`java.awt`和`javax.imageio`包,可以创建一个新的图像并绘制数字到图像上。这...
首先,我们需要创建一个Java类来生成随机字符串和绘制图片。在这个例子中,`TokenUtil` 类是关键,它包含了生成随机字符串和创建BufferedImage对象的方法。`base` 变量包含了一个字符集,用于生成随机字符串。`...
(1) **生成随机字符串**:首先,我们需要创建一个函数,该函数使用Java的`Random`类或`SecureRandom`类生成一组随机的字符串或数字。可以设定字符串的长度,通常为4-6位。 ```java String randomStr = ""; Random ...