随机生成验证码

随机生成验证码 
login.jsp--------------------登录页面,在这里我是提供输入验证码然后提交进行验证
代码如下:


<% @ page contentType = " text/html; charset=gb2312 " %>
< html >
< head >
< meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " >
< title > 用户登录 </ title >
< script language = " javascript " >
function loadimage() {
document.getElementById( " randImage " ).src = " image.jsp? " + Math.random();
}
</ script >
</ head >

< body >

< table width = " 256 " border = " 0 " cellpadding = " 0 " cellspacing = " 0 " >
<!-- DWLayoutTable -->
< form action = " validate.jsp " method = " post " name = " loginForm " >
< tr >
< td width = " 118 " height = " 22 " valign = " middle " align = " center " >< input type = " text " name = " rand " size = " 15 " ></ td >
< td width = " 138 " valign = " middle " align = " center " >< img alt = " code " name = " randImage " id = " randImage " src = " image.jsp " width = " 60 " height = " 20 " border = " 1 " align = " absmiddle " ></ td >
</ tr >
< tr >
< td height = " 36 " colspan = " 2 " align = " center " valign = " middle " >< a href = " javascript:loadimage(); " >< font class = pt95 > 刷新 </ font ></ a ></ td >
</ tr >
< tr >
< td height = " 36 " colspan = " 2 " align = " center " valign = " middle " >< input type = " submit " name = " login " value = " 提交 " ></ td >
</ tr >
</ form >
</ table >
</ body >
</ html >



image.jsp-------------------生成随即验证码图片的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 (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);
}
%>
<%
out.clear(); // 这句针对resin服务器,如果是tomacat可以不要这句
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(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);
}


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


validate.jsp-------------用来验证输入的验证码是否正确
代码如下:

<% @ page contentType = " text/html; charset=gb2312 " %>
<%
String rand = ( String )session.getAttribute( " rand " );
String input = request.getParameter( " rand " );
if (rand.equals(input)) {
out.print( " <script>alert('验证通过!');</script> " );
} else {
out.print( " <script>alert('请输入正确的验证码!');location.href='login.jsp';</script> " );
}
%>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值