原文:http://www.blogjava.net/beansoft/archive/2007/08/03/134334.html
<%@ 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();
out.clear();
request.setAttribute("gzip", "false");
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
return;
%>
分享到:
相关推荐
JSP 生成随机验证码图片(经典老代码)
生成随机验证码 String captchaCode = generateRandomCode(); // 2. 创建并绘制图片 BufferedImage image = createAndDrawCaptcha(captchaCode); // 3. 存储到Session session.setAttribute("captcha", ...
1. **生成随机字符串**:这是验证码的核心,通常包含4到6个字符。可以使用Java的`Random`类结合字符集(如ASCII或Unicode)来生成随机字符串。 2. **创建BufferedImage对象**:使用Java的`java.awt.image....
**JSP随机验证码技术详解** ...总结,JSP生成随机验证码图片是一项实用的技术,它能够有效地防止恶意的自动脚本对网站造成的影响。通过理解其工作原理并结合实际应用,我们可以构建出更加安全、高效的验证码系统。
1. JSP 验证码生成:使用 JSP 生成验证码,包括生成验证码图片、将验证码存入 SESSION 等。 * 使用 JSP 生成验证码图片,通过 BufferedImage 和 Graphics 实现验证码图片的生成。 * 将验证码存入 SESSION,以便...
在这个JSP随机验证码实例中,我们将深入探讨其工作原理、实现方法以及源码解析。 验证码的核心是生成一组随机的、难以被程序识别的字符或数字组合。在JSP(JavaServer Pages)环境中,我们可以利用Java的强大功能来...
总结,使用JSP生成随机验证码涉及到JSP基本语法、内置对象、字符串操作、随机数生成、图像处理以及服务器端验证等多个知识点。这个过程不仅有助于提高网站安全性,也是理解JSP和Web开发实践的重要一课。
生成随机验证码通常包括以下步骤: 1. **生成随机数字**:使用Java的`Random`类或者`ThreadLocalRandom`类生成4位或6位的随机数字。例如: ```java int randomNum = ThreadLocalRandom.current().nextInt(10000, ...
本项目“jsp随机验证码生成测试”提供了一个基于Java Server Pages (JSP) 实现的验证码生成实例,旨在帮助开发者理解和实践如何在Web应用程序中集成验证码功能。 验证码的主要目的是验证用户是人而不是计算机程序。...
- **随机生成字符**:在Java中,可以使用`Random`类生成随机数字或字母,或者汉字。 - **字体选择**:为了增加识别难度,可能会使用多种字体混合。 - **颜色设定**:这里的“彩色”是指每个字符可能有不同的颜色...
- **字符集**:`char[] code` 定义了一个字符数组,包含了大写字母、小写字母以及数字,用于生成随机验证码。 ##### 2. 随机验证码字符生成 - 通过循环和随机函数生成4位验证码: ```java for (int i = 0; i ; i...
4. **随机验证码**:通过 `getRandomString()` 方法生成随机数字串,并将其保存到session中,以便后续验证时使用。 5. **避免浏览器缓存**:通过设置HTTP响应头 `Cache-Control` 来禁止浏览器缓存图片,确保每次刷新...
在本主题中,我们将详细探讨如何使用Java Servlet(jsp)来生成图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们...
1. **生成随机数字或字母**:验证码通常由一组随机的字符组成,可以是数字、字母,甚至包括特殊字符。在JSP中,我们可以使用`java.util.Random`类来生成随机数,然后通过ASCII码转换为对应的字符。 2. **扭曲和变形...
在这个"JSP生成数字验证码程序例子"中,我们将探讨如何利用JSP来生成一种常见的安全机制——数字验证码。 验证码的主要目的是防止自动化程序(如机器人或爬虫)进行非法操作,比如注册、登录或提交表单。它们通常...
"jsp生成验证码很好的例子"这个标题暗示我们将探讨如何使用JavaServer Pages(JSP)技术来创建一个有效的验证码系统。 首先,验证码的生成过程包括以下几个步骤: 1. **随机字符生成**:验证码通常由一组随机的...
1. **生成随机中文字符**:Java中可以使用`java.util.Random`类结合Unicode编码来生成随机的中文字符。中文字符通常在Unicode的`\u4e00`到`\u9fff`范围内,所以你需要创建一个包含这个范围的字符数组,并从中随机...
总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...
在JSP中,我们可以利用Java的Math类来生成随机数字,并通过Graphics类绘制到图片上。 首先,创建一个JSP页面,引入必要的库,如javax.imageio.ImageIO和java.awt.image.BufferedImage。然后,定义一个方法生成随机...
这个页面会通过Java代码生成随机的验证码字符串,并将其存储在服务器的会话(session)中,以便后续验证使用。同时,它还会生成对应的图像,将随机字符以彩色形式绘制到图像上,然后返回给客户端浏览器显示。 在...