JSP生成驗證碼

          Posted on 2007-04-18 19:54 久城 閱讀(1080) 評論(3)  編輯  收藏 所屬分類: Jsp學習
          <%@ page contentType="image/jpeg"
              
          import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
              pageEncoding
          ="gb2312"%>
          <%!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(200250));
              g.fillRect(
          00, width, height);
              
          //設定字體   
              g.setFont(new Font("Times New Roman", Font.PLAIN, 18));  
              
          // 隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到   
              g.setColor(getRandColor(160200));
              
          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.setCor(new Color(20 + random.nextInt(110), 20 + random
                  .nextInt(
          110), 20 + random.nextInt(110)));
                  
          //調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成   
                  g.drawString(rand, 13 * i + 616);
              }

              
          // 將認證碼存入SESSION   
              session.setAttribute("rand", sRand);
              
          // 圖象生效   
              g.dispose();
              
          // 輸出圖象到頁面   
              ImageIO.write(image, "JPEG", response.getOutputStream());
          %>


          歡迎來訪!^.^!
          本BLOG僅用于個人學習交流!
          目的在于記錄個人成長.
          所有文字均屬于個人理解.
          如有錯誤,望多多指教!不勝感激!

          Feedback

          # re: JSP生成驗證碼  回復  更多評論   

          2007-04-18 20:34 by 靜兒
          其實我經常登陸你的blog,一直覺得你是個奇人。現在最令我奇怪的一件事發生了:你怎么知道我的blog的?呵呵,以后我得多向你學習,你可別嫌麻煩哦!

          # re: JSP生成驗證碼[未登錄]  回復  更多評論   

          2007-06-11 22:33 by ^_^
          最好寫一下調用并判斷驗證碼的過程

          # re: JSP生成驗證碼  回復  更多評論   

          2007-08-15 15:07 by ddd
          LS, 調用和判斷很簡單呀!

          既然程序里已經生成了驗證碼,

          用它直接跟User輸入的比較就好。。。

          至于驗證碼如何保存,Session,Request啥的,就是喜好問題了

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


          網站導航:
           

          Copyright © 久城

          主站蜘蛛池模板: 将乐县| 贵南县| 五河县| 鱼台县| 巴里| 靖安县| 藁城市| 奉贤区| 凤庆县| 繁峙县| 田阳县| 潞西市| 天气| 奉贤区| 利辛县| 方山县| 沭阳县| 新民市| 建德市| 乡宁县| 河北区| 望谟县| 永修县| 普兰店市| 台中市| 巴青县| 南华县| 平乐县| 东明县| 齐齐哈尔市| 阿巴嘎旗| 乌兰察布市| 西城区| 兴业县| 梁河县| 鸡东县| 怀化市| 昌宁县| 沿河| 正定县| 定兴县|