利用JSP在Web页面中显示随机数字验证码图片

转载 2004年09月30日 13:24:00

注 : 转自http://blog.csdn.net/ezerg/archive/2004/09/30/121469.aspx


代码如下:

<%@ 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(255,255,255));
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());
%>

如果有什么问题,可与我联系: webmaster@bcxy.com   

利用JSP在Web页面中显示随机数字验证码图片

代码如下:java.awt.image.*,java.util.*,javax.imageio.*" %>Color getRandColor(int fc,int bc){//给定范围获得随机颜色R...
  • ezerg
  • ezerg
  • 2004年09月30日 10:49
  • 3765

JavaWeb 输出随机验证码图片

Servlet 代码: package zhang.response; import java.awt.Color; import java.awt.Font; import java.awt.G...
  • Zhang_hongchao
  • Zhang_hongchao
  • 2015年11月18日 13:47
  • 716

JSP彩色验证码 字母+数字

本文说明了如何在JSP中生成彩色的由数字加字母随机组成的验证码,以及不刷新页面改变验证码的方法.本文参考了网友的一些代码,并在此基础上做了一些修改!产生验证码图片的文件image.jsp  Rando...
  • wlwqw
  • wlwqw
  • 2008年01月16日 12:08
  • 1767

jsp 不显示验证码图片问题的解决办法之一

在显示图片的页面中加上
  • xiaochangwei789
  • xiaochangwei789
  • 2012年07月11日 09:12
  • 483

JSP生成数字验证码教程

验证码应用在各种场合中,十分广泛,在多种多样的系统或软件中的新用户帐户注册、用户登录、网站统一登陆或者用户在网站发布信息模块发布文章或内容都添加的随机码功能,对用户操作过程进行一种验证,使用验证码的目...
  • u012490096
  • u012490096
  • 2014年05月25日 14:22
  • 719

登录验证码(验证码图片用jsp显示出来的)

login.jsp 验证码:
  • hanb1992
  • hanb1992
  • 2016年05月18日 10:08
  • 493

jsp页面获取java生成的图片验证码

实现自动生成图片验证码,点击验证码能够更换验证码
  • mr_xiyue
  • mr_xiyue
  • 2016年03月30日 16:41
  • 1661

关于jsp中验证码在某些浏览器中无法显示的问题

最近编写的jsp程序中验证码无法在qq浏览器,360浏览器,谷歌浏览器中正常显示,可以在火狐浏览器中正常显示。具体的原因还未知,不过如果在生成验证码的程序中 在 response.setH...
  • lhy18235303007
  • lhy18235303007
  • 2017年04月19日 17:20
  • 465

随机数字图片验证码的原理、生成和破解

随机数字图片验证码。图片上的字符比较中规中矩,有的可能加入一些随机干扰素,还有一些是随机字符颜色,验证作用比上一个好。没有基本图形图像学知识的人,不可破! 目录 最常见的验证码主要有以下几种:验...
  • havarduniv
  • havarduniv
  • 2015年03月30日 16:02
  • 2131

JSP随机验证码

验证码应用在各种场合中,十分广泛,在多种多样的系统或软件中的新用户帐户注册、用户登录、网站统一登陆或者用户在网站发布信息模块发布文章或内容都添加的随机码功能,对用户操作过程进行一种验证,使用验证码的目...
  • jason_deng
  • jason_deng
  • 2011年12月13日 10:15
  • 1440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用JSP在Web页面中显示随机数字验证码图片
举报原因:
原因补充:

(最多只允许输入30个字)