<%@ page contentType="image/jpeg"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,java.io.*"%>
<%!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 = 58, height = 18;
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);
}
char[] code = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'k', 'm', 'n', 'p', 'q', 'r', 's', 't',
'u', 'v', 'w', 'x', 'y', 'z', '2', '3', '4', '5', '6', '7',
'8', '9' };
// 取随机产生的认证码(4位数字)
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(code[random.nextInt(54)]);
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();
OutputStream os = response.getOutputStream();
// 输出图象到页面
try {
ImageIO.write(image, "JPEG", os);
// os.flush();
// os.close();
// os = null;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
} catch (Exception e) {
}finally{
os.flush();
os.close();
os = null;
}
%>
分享到:
相关推荐
最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码最新JSP生成验证码
生成验证码 jsp 图片验证码 生成验证码 jsp 图片验证码
JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt
jsp生成动态验证码,jsp生成动态验证码。
生成验证码,生成验证码生成验证码,生成验证码
利用jsp生成图片验证码,没有用到servlet
在jsp登录页面生成验证码,并在登录的时候在后台进行验证码是否一致的比较。
生成验证码图片的jsp代码生成验证码图片的jsp代码
JSP生成验证码示例
JSP生成验证码源程序源代码
经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码经典JSP生成验证码
做好 备份 为以后 唤起 jsp随机生成验证码 记忆
采用jsp 生成验证码,我自己使用过的。使用方法: <img src="./../function/imagejsp.jsp" style="float: left">
JSP生成验证码, 1.login.jsp:登录页面 2.code.jsp:生成验证码图片页面 3.check.jsp:验证结果
Jsp生成随机验证码 1.使用方式:在Jsp页面使用标签即可,例如:<img src="../image.jsp" title="验证码" alt="验证码" id="vCode" /> 2.本代码生成的验证码是一张 由26个英文字母和0-9随机组成的一个组合
jsp生成中文字符的验证码 中文字符 中文验证码
JSP自动生成彩色验证码-由2个JSP页面与一个action验证验证码的类构成,code.jsp自动生成4位彩色随机码。index.jsp是登陆页面包含彩色验证码
生成验证码,用于resin服务器的验证码生成
用JSP生成随机数字验证码,数字验证码是图片形式的。通过点击按钮,可以实现对数字验证码的刷新。
网站登录或者注册时生成的验证码图片,很好用。