jsp生成驗證碼

            <%@   page   contentType="image/jpeg"   import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" pageEncoding="utf-8"%>   
            
          <%!   
            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());   
              
              
            
          %>  

          posted on 2007-07-21 22:41 hugh 閱讀(198) 評論(0)  編輯  收藏 所屬分類: JAVA

          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          公告

          小弟打算把硬盤里的所有資料整理到博客里,但是其中收藏了不少網上的文章(個人也記不住作者),請作者見諒!請知道作者的朋友(或作者本人)看到了請告訴小弟,小弟好把作者加上!

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 巨野县| 龙井市| 阿城市| 垫江县| 华宁县| 永嘉县| 武威市| 德昌县| 长海县| 江口县| 哈密市| 都兰县| 阜城县| 宁晋县| 阿克苏市| 溆浦县| 灵川县| 宁津县| 福清市| 石楼县| 饶阳县| 泸水县| 永州市| 舟山市| 石嘴山市| 秦安县| 寻乌县| 罗源县| 伊通| 洞口县| 阜新市| 平罗县| 淄博市| 西安市| 林西县| 齐河县| 龙州县| 紫云| 嵊州市| 电白县| 兴业县|