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

          隨機碼的產生

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

          隨機碼的產生

          <% @?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 );

          // ?在內存中創建圖象
          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);
          // ?隨機產生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);
          }

          // ?取隨機產生的認證碼(4位數字)
          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());
          %>
          主站蜘蛛池模板: 仲巴县| 滦南县| 林西县| 崇义县| 集安市| 泊头市| 平凉市| 河曲县| 兴义市| 本溪市| 广宗县| 德州市| 蒲城县| 敖汉旗| 井陉县| 新巴尔虎左旗| 富阳市| 四会市| 保山市| 思南县| 沙坪坝区| 平远县| 禹城市| 和林格尔县| 太康县| 建瓯市| 定兴县| 永善县| 临泉县| 大埔区| 西充县| 平潭县| 阳原县| 茂名市| 新绛县| 许昌市| 密云县| 清流县| 井冈山市| 沙洋县| 紫阳县|