隨機(jī)驗證碼

          隨機(jī)驗證碼程序

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

          //  在內(nèi)存中創(chuàng)建圖象 
                   int  width  =   90 , height  =   40 ;
                  BufferedImage image 
          =      new  BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

          //  獲取圖形上下文 
                  Graphics g  =  image.createGraphics();

          //  設(shè)定背景色 
                  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 ++ {
                  
          //  取隨機(jī)產(chǎn)生的認(rèn)證碼(4位數(shù)字) 
                      String rand  =  String.valueOf(random.nextInt( 10 ));
                      sRand 
          +=  rand;
                  
          //  隨機(jī)產(chǎn)生顏色    
                      g.setColor(
                          
          new  Color(
                              
          20   +  random.nextInt( 80 ),
                              
          20   +  random.nextInt( 100 ),
                              
          20   +  random.nextInt( 90 )));
                  
          //  畫數(shù)字
                      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-06-26 22:02 baim 閱讀(213) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          常用鏈接

          隨筆分類(27)

          隨筆檔案(28)

          搜索

          最新評論

          主站蜘蛛池模板: 墨脱县| 德安县| 镇远县| 万全县| 多伦县| 榕江县| 扎兰屯市| 雅江县| 长治县| 海门市| 鄄城县| 尚志市| 普宁市| 汝州市| 泽州县| 九寨沟县| 宜昌市| 伊春市| 玉树县| 广河县| 疏勒县| 龙泉市| 白河县| 磐安县| 得荣县| 西吉县| 定陶县| 天峨县| 基隆市| 浙江省| 烟台市| 大理市| 紫阳县| 定边县| 策勒县| 冷水江市| 平邑县| 镇江市| 阿荣旗| 昭苏县| 通江县|