JSP彩色验证码

孙代西猛艳

孙代西猛艳

2016-01-29 12:14

JSP彩色验证码,JSP彩色验证码
 

    生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)
原型参考ALIBABA  http://china.alibaba.com/member/showimage

产生验证码图片的文件-----image.jsp

<%@ 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(fc255) fc=255;
        if(bc255) 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);

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)

// 获取图形上下文
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();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());


%

---------------使用验证码图片的文件---------a.jsp------------------------------------

<%@ page contentType="text/html;charset=gb2312" %
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
<html
<head
<title认证码输入页面</title
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"
<META HTTP-EQUIV="Expires" CONTENT="0"
</head
<body
<form method=post action="check.jsp"
<table
<tr
<td align=left系统产生的认证码:</td
<td<img border=0 src="http://img.jcwcn.com/attachment/portal"</td
</tr
<tr
<td align=left输入上面的认证码:</td
<td<input type=text name=rand maxlength=4 value=""</td
</tr
<tr
<td colspan=2 align=center<input type=submit value="提交检测"</td
</tr
</form
</body
</html

-----------------验证的页面----------check.jsp

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/java/)

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %
<html
<head
<title&

展开更多 50%)
分享

猜你喜欢

JSP彩色验证码

Java JAVA基础
JSP彩色验证码

JSP彩色验证码的实例代码

Web开发
JSP彩色验证码的实例代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用jsp生成彩色汉字验证码

Java JAVA基础
使用jsp生成彩色汉字验证码

JSP验证码代码

Web开发
JSP验证码代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

jsp 生成验证码代码

Web开发
jsp 生成验证码代码

jsp实现图形验证码

Web开发
jsp实现图形验证码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

在jsp中作HTTP认证的方法

在jsp中作HTTP认证的方法

JSP如何保存用户上次登录时间

JSP如何保存用户上次登录时间
下拉加载更多内容 ↓