即使世界明天毀滅,我也要在今天種下我的葡萄樹。
          posts - 112, comments - 14, trackbacks - 0, articles - 11

          隨機碼的產(chǎn)生

          Posted on 2006-05-25 14:18 閱讀(246) 評論(0)  編輯  收藏 所屬分類: WEB Design

          隨機碼的產(chǎn)生

          <% @?page?contentType? = ? " ?image/jpeg " ? import = " java.awt.*? " ? %>
          <% @?page? import ? = ? " 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);
          }

          %>

          <%
          // 設置頁面不緩存
          response.setHeader( " Pragma " , " No-cache " );
          response.setHeader(
          " Cache-Control " , " no-cache " );
          response.setDateHeader(
          " Expires " ,? 0 );

          // ?在內(nèi)存中創(chuàng)建圖象
          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(new?Color());
          // g.drawRect(0,0,width-1,height-1);
          // ?隨機產(chǎn)生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);
          }

          // ?取隨機產(chǎn)生的認證碼(4位數(shù)字)
          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 )));
          // 調(diào)用函數(shù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成
          g.drawString(rand, 13 * i + 6 , 16 );
          }

          // ?將認證碼存入SESSION
          session.setAttribute( " rand " ,sRand);
          // ?圖象生效
          g.dispose();
          // ?輸出圖象到頁面
          ImageIO.write(image,? " JPEG " ,?response.getOutputStream());
          %>
          主站蜘蛛池模板: 黄大仙区| 晋城| 黑山县| 德阳市| 宝兴县| 遂川县| 桂东县| 阳泉市| 龙川县| 天柱县| 府谷县| 通州区| 芜湖县| 侯马市| 九江市| 馆陶县| 类乌齐县| 昌都县| 平远县| 岳阳县| 辛集市| 清河县| 信宜市| 彰化市| 滕州市| 班玛县| 龙井市| 琼中| 砀山县| 湖北省| 琼结县| 乌海市| 方正县| 南雄市| 巧家县| 泾源县| 塔城市| 阿拉尔市| 沛县| 三河市| 克拉玛依市|