<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="UTF-8" %>
<%!
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();
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
发表评论
-
JDK1.5新特性介绍
2010-04-27 09:08 659本文引用:http://www.yesky.com/263 ... -
数据动态插入表格
2009-09-10 13:42 669<%@ page language="java ... -
js 发送邮件
2009-07-22 14:27 6918有时mailto 用起来不是很 ... -
页面分辨率问题
2009-07-22 14:10 986今天需要给页面插入背景图片, 开始是1024*768 标准分 ... -
css 应用
2009-07-09 22:04 762用css控制的语法如下: <span styl ... -
框架说明
2009-06-25 15:05 613数据库底层交互接口,及实现类 ... -
java 按对象属性排序
2009-06-25 13:51 11981、为了尽可能少的交互数据库 2、工作中难免会遇到得到一个集 ... -
表格样式还不错
2009-06-25 13:45 654<table width="100%" ... -
js动态增加表格
2009-06-08 17:52 1210场景: 使用js 实现对表格记录的增删改 页面样式: ... -
数据类型不匹配
2009-06-08 17:42 2167报错信息: java.servlet.ServletExce ... -
物流静态网站
2009-01-16 11:59 643最近帮同事做了个静态网站,物流方面的,就当没事做着玩了 -
mysql 注意
2008-10-22 17:23 869MySql局域网连接慢的解决方法 skip-name-reso ... -
vb 发邮件
2008-10-22 15:22 1526vb 发信,代码如下 Dim sFileName ... -
jdk引入第三方jar
2008-10-22 11:52 1528要求:定时发信功能 细节:只允许装jdk 方案:定时用批处 ... -
mysql 注意
2008-09-03 09:30 692MySql局域网连接慢的解决方法 skip-name-reso ... -
js 应用
2008-08-05 14:28 625如附件1 如附件2 如附件3 -
爱上css
2008-08-04 18:15 682以前很不重视css,老板要做静态页面,时间空闲搞java开发的 ... -
编码问题
2007-07-19 17:18 984"计算机 "转码 1. u ... -
格式化输出
2007-04-20 10:01 1333// 日期格式化输出字符串 Simple ... -
session listener
2007-02-06 17:41 1142java 代码 package com.l ...
相关推荐
验证码工具jar包,随机生成验证码
调用类自动生成验证码,可用于web项目的注册登录。详情看说明
HTML实现,有随机生成的验证码+按钮+输入框
生成验证码 jsp 图片验证码 生成验证码 jsp 图片验证码
c#生成图形验证码 --一图片的形式生成验证码
java随机生成验证码
google的Kaptcha生成验证码,附件有jar资源和使用Demo 一款可以各种配置显示方式的验证码
springboot生成验证码完整demo
Asp.Net 生成验证码 验证码详细源码,自动更新
下载完直接就是一个C#的VerificationCodeHelper.cs类,类中已经写好自动生成验证码的代码功能,直接调用验证码的实体类就可以使用。
java web笔记之servlet生成验证码java web笔记之servlet生成验证码
在jsp登录页面生成验证码,并在登录的时候在后台进行验证码是否一致的比较。
生成验证码图片的jsp代码生成验证码图片的jsp代码
将这两个文件拷贝到项目当中,在需要加验证码的页面添加一个image空间,imageurl 指定到此页面,生成的验证码保存在Session["CheckCode"]中,验证时,将用户输入的值和此值比对
asp.net(c#)生成验证码 点击可刷新
都弄好的 按空格键生成验证码 !!!
随机生成验证码工具类 长度为4位或者6位
winform随机生成验证码案例
servlet生成验证码图片