随机验证码程序

  import   java.awt.Color;
 
import   java.awt.Font;
 
import   java.awt.Graphics;
 
import   java.awt.image.BufferedImage;
 
import   java.io.IOException;
 
import   java.util.Random;

 
import   javax.servlet.Servlet;
 
import   javax.servlet.ServletException;

 
import   javax.servlet.http.HttpServlet;
 
import   javax.servlet.http.HttpServletRequest;
 
import   javax.servlet.http.HttpServletResponse;

 
/**   */   /**  
 *  
@version       1.0
 *  
@author        baiyf
  
*/  
  
public     class   ValidateImg   extends   HttpServlet   implements   Servlet   {
     
public   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);
    } 
      
/**   */   /**  
    *  
@see   javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     
*/  
     
public     void   doGet(HttpServletRequest req, HttpServletResponse resp)
         
throws   ServletException, IOException   {
        doPost(req, resp);
    } 
 
      
/**   */   /**  
    *  
@see   javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     
*/  
     
public     void   doPost(HttpServletRequest req, HttpServletResponse resp)
         
throws   ServletException, IOException   {
        resp.setHeader( 
"  Pragma  "  ,   "  No-cache  "  );
        resp.setHeader( 
"  Cache-Control  "  ,   "  no-cache  "  );
        resp.setDateHeader( 
"  Expires  "  ,   0  );

 
//   在内存中创建图象  
           int   width   =     90  , height   =     40  ;
        BufferedImage image  
=        new   BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

 
//   获取图形上下文  
         Graphics g   =   image.createGraphics();

 
//   设定背景色  
         g.setColor(getRandColor(  180  ,   250  ));
        g.fillRect( 
0  ,   0  , width, height);
        
        Random random  
=     new   Random();    
        
         
//  生成干扰椭圆     
            for   (  int   i   =     0  ; i   <     5  ; i  ++  )   {
            g.setColor(getRandColor( 
50  ,   100  ));
             
int   x   =   random.nextInt(width);
             
int   y   =   random.nextInt(height);
            g.drawOval(x, y,  
4  ,   4  );
        } 
 
        g.setFont( 
new   Font(  ""  , Font.PLAIN,   40  ));

        String sRand  
=     ""  ;
         
for   (  int   i   =     0  ; i   <     4  ; i  ++  )   {
         
//   取随机产生的认证码(4位数字)  
             String rand   =   String.valueOf(random.nextInt(  10  ));
            sRand  
+=   rand;
         
//   随机产生颜色     
             g.setColor(
                 
new   Color(
                     
20     +   random.nextInt(  80  ),
                     
20     +   random.nextInt(  100  ),
                     
20     +   random.nextInt(  90  )));
         
//   画数字 
             g.drawString(rand, (  17     +   random.nextInt(  3  ))   *   i   +     8  ,   34  );

     
//  生成干扰线 
                for   (  int   k   =     0  ; k   <     12  ; k  ++  )   {
                 
int   x   =   random.nextInt(width);
                 
int   y   =   random.nextInt(height);
                 
int   xl   =   random.nextInt(  9  );
                 
int   yl   =   random.nextInt(  9  );
                g.drawLine(x, y, x  
+   xl, y   +   yl);
            } 
        } 
        req.getSession().setAttribute( 
"  rand  "  ,sRand);
        g.dispose();
        javax.imageio.ImageIO.write(image,  
"  JPEG  "  , resp.getOutputStream());

    } 
posted on 2006-07-05 14:18 knowhow 阅读(216) 评论(0)  编辑  收藏 所属分类: Java基础知识

只有注册用户登录后才能发表评论。


网站导航: