`
saaya
  • 浏览: 74929 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

转载:JSP 生成随机验证码图片(经典老代码)

阅读更多

原文: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;
%>

分享到:
评论
2 楼 saaya 2009-10-23  
osacar 写道
楼主,怎么我调用都显不来啊。没东西显示啊。

你好,本文是转载的,你到原文地址去看看,问问原作者
1 楼 osacar 2009-10-11  
楼主,怎么我调用都显不来啊。没东西显示啊。

相关推荐

    JSP 生成随机验证码图片(经典老代码)

    JSP 生成随机验证码图片(经典老代码)

    利用jsp生成图片验证码

    生成随机验证码 String captchaCode = generateRandomCode(); // 2. 创建并绘制图片 BufferedImage image = createAndDrawCaptcha(captchaCode); // 3. 存储到Session session.setAttribute("captcha", ...

    生成验证码图片的jsp代码

    1. **生成随机字符串**:这是验证码的核心,通常包含4到6个字符。可以使用Java的`Random`类结合字符集(如ASCII或Unicode)来生成随机字符串。 2. **创建BufferedImage对象**:使用Java的`java.awt.image....

    jsp随机验证码(图片)

    **JSP随机验证码技术详解** ...总结,JSP生成随机验证码图片是一项实用的技术,它能够有效地防止恶意的自动脚本对网站造成的影响。通过理解其工作原理并结合实际应用,我们可以构建出更加安全、高效的验证码系统。

    jsp实现注册页面验证码验证代码

    1. JSP 验证码生成:使用 JSP 生成验证码,包括生成验证码图片、将验证码存入 SESSION 等。 * 使用 JSP 生成验证码图片,通过 BufferedImage 和 Graphics 实现验证码图片的生成。 * 将验证码存入 SESSION,以便...

    JSP随机验证码实例源码

    在这个JSP随机验证码实例中,我们将深入探讨其工作原理、实现方法以及源码解析。 验证码的核心是生成一组随机的、难以被程序识别的字符或数字组合。在JSP(JavaServer Pages)环境中,我们可以利用Java的强大功能来...

    jsp随机生成验证码

    总结,使用JSP生成随机验证码涉及到JSP基本语法、内置对象、字符串操作、随机数生成、图像处理以及服务器端验证等多个知识点。这个过程不仅有助于提高网站安全性,也是理解JSP和Web开发实践的重要一课。

    JSP 随机验证码

    生成随机验证码通常包括以下步骤: 1. **生成随机数字**:使用Java的`Random`类或者`ThreadLocalRandom`类生成4位或6位的随机数字。例如: ```java int randomNum = ThreadLocalRandom.current().nextInt(10000, ...

    jsp随机验证码生成测试

    本项目“jsp随机验证码生成测试”提供了一个基于Java Server Pages (JSP) 实现的验证码生成实例,旨在帮助开发者理解和实践如何在Web应用程序中集成验证码功能。 验证码的主要目的是验证用户是人而不是计算机程序。...

    java jsp 生成彩色验证码+验证功能代码,可直接运行,没有数据库

    - **随机生成字符**:在Java中,可以使用`Random`类生成随机数字或字母,或者汉字。 - **字体选择**:为了增加识别难度,可能会使用多种字体混合。 - **颜色设定**:这里的“彩色”是指每个字符可能有不同的颜色...

    JSP页面验证码生成图片

    - **字符集**:`char[] code` 定义了一个字符数组,包含了大写字母、小写字母以及数字,用于生成随机验证码。 ##### 2. 随机验证码字符生成 - 通过循环和随机函数生成4位验证码: ```java for (int i = 0; i ; i...

    JSP中利用Servlet生成验证码图片

    4. **随机验证码**:通过 `getRandomString()` 方法生成随机数字串,并将其保存到session中,以便后续验证时使用。 5. **避免浏览器缓存**:通过设置HTTP响应头 `Cache-Control` 来禁止浏览器缓存图片,确保每次刷新...

    生成验证码 jsp 图片验证码

    在本主题中,我们将详细探讨如何使用Java Servlet(jsp)来生成图片验证码。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们...

    验证码生成jsp 代码

    1. **生成随机数字或字母**:验证码通常由一组随机的字符组成,可以是数字、字母,甚至包括特殊字符。在JSP中,我们可以使用`java.util.Random`类来生成随机数,然后通过ASCII码转换为对应的字符。 2. **扭曲和变形...

    JSP生成数字验证码程序例子

    在这个"JSP生成数字验证码程序例子"中,我们将探讨如何利用JSP来生成一种常见的安全机制——数字验证码。 验证码的主要目的是防止自动化程序(如机器人或爬虫)进行非法操作,比如注册、登录或提交表单。它们通常...

    jsp生成验证码很好的例子

    "jsp生成验证码很好的例子"这个标题暗示我们将探讨如何使用JavaServer Pages(JSP)技术来创建一个有效的验证码系统。 首先,验证码的生成过程包括以下几个步骤: 1. **随机字符生成**:验证码通常由一组随机的...

    jsp java 生成中文验证码

    1. **生成随机中文字符**:Java中可以使用`java.util.Random`类结合Unicode编码来生成随机的中文字符。中文字符通常在Unicode的`\u4e00`到`\u9fff`范围内,所以你需要创建一个包含这个范围的字符数组,并从中随机...

    jsp生成图片验证码

    总结来说,使用JSP生成图片验证码涉及到以下几个关键点:生成随机字符串、存储验证码、绘制并输出图片以及设置HTTP响应类型。这种方法简单易用,但要注意,对于高级的自动化攻击,可能需要更复杂的验证码解决方案,...

    jsp四位验证码图片生成

    在JSP中,我们可以利用Java的Math类来生成随机数字,并通过Graphics类绘制到图片上。 首先,创建一个JSP页面,引入必要的库,如javax.imageio.ImageIO和java.awt.image.BufferedImage。然后,定义一个方法生成随机...

    JSP自动生成彩色验证码

    这个页面会通过Java代码生成随机的验证码字符串,并将其存储在服务器的会话(session)中,以便后续验证使用。同时,它还会生成对应的图像,将随机字符以彩色形式绘制到图像上,然后返回给客户端浏览器显示。 在...

Global site tag (gtag.js) - Google Analytics