Java 随机验证码

step 1 : 生成随机验证码的页面 /common/randomNumber.jsp

 
  
<% @ page contentType = " image/jpeg " import = " java.awt.*,java.awt.image.*,com.sun.image.codec.jpeg.*,java.util.* " %>
<% !
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 );

out.clear();
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.setAttribute(
" rand " ,sRand);
g.dispose();
ServletOutputStream outStream
= response.getOutputStream();
JPEGImageEncoder encoder
= JPEGCodec.createJPEGEncoder(outStream);
encoder.encode(image);
outStream.close();
out.clear();
out
= pageContext.pushBody();
%>

step 2 :  使用验证码的页面

 
  
< input type ="text" name ="ckcode" size ="4" />
  < img name ="CheckNumber" border =0 src ="/common/randomNumber.jsp"
onclick ="this.src='/common/randomNumber.jsp?'+Math.random()" width ="60" height ="20" alt =""  / >

 

 

step 3 : servlet 验证

 
  
String ccode = (String)request.getSession().getAttribute( " rand " );
String code
= request.getParameter( " ckcode " );
if ( ! code.equals(ccode)){
// 验证码不正确
}

 

 

 

转载于:https://www.cnblogs.com/tqspring/archive/2010/02/09/1666255.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值