<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java世界
    有些人注定要生活在彼岸,可以親近可以愛憐,甚至可以窮盡一生去思念,只是無法觸及有些距離,注定不能跨越只能倆倆相望,就像有些愛只能養(yǎng)在心里長在眼中,不能捧在手里放在身邊,注定只能邂逅無法遭遇!
    posts - 12,comments - 15,trackbacks - 0
    /* 
    * Created on 2004-8-4 

    * To change the template for this generated file go to 
    * Window>Preferences>Java>Code Generation>Code and Comments 
    */ 
    package myclass.test; 

    import java.awt.*; 
    import java.awt.image.*; 
    import java.util.*; 

    /** 
    * @author 

    * To change the template for this generated type comment go to 
    * Window>Preferences>Java>Code Generation>Code and Comments 
    */ 
    public class Image { 

    public String sRand=""; 

    public Color getRandColor(int fc,int bc){//給定范圍獲得隨機(jī)顏色 
    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); 

    public BufferedImage creatImage(){ 

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

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

    //生成隨機(jī)類 
    Random random = new Random(); 

    // 設(shè)定背景色 
    g.setColor(getRandColor(200,250)); 
    g.fillRect(0, 0, width, height); 

    //設(shè)定字體 
    g.setFont(new Font("Times New Roman",Font.PLAIN,18)); 

    //畫邊框 
    //g.setColor(new Color()); 
    //g.drawRect(0,0,width-1,height-1); 


    // 隨機(jī)產(chǎn)生155條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測到 
    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); 


    // 取隨機(jī)產(chǎn)生的認(rèn)證碼(4位數(shù)字) 
    //String rand = request.getParameter("rand"); 
    //rand = rand.substring(0,rand.indexOf(".")); 

    for (int i=0;i<4;i++){ 
    String rand=String.valueOf(random.nextInt(10)); 
    sRand+=rand; 
    // 將認(rèn)證碼顯示到圖象中 
    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); 

    // 圖象生效 
    g.dispose(); 
    return image; 


    ====================================================================== 
    image.jsp(對bean的引用) 

    <%@ page contentType="image/jpeg" import="javax.imageio.*" %> 
    <jsp:useBean id="image" scope="session" class="myclass.test.Image"/> 

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

    // 將認(rèn)證碼存入SESSION 
    session.setAttribute("rand",image.sRand); 

    // 輸出圖象到頁面 
    ImageIO.write(image.creatImage(), "JPEG", response.getOutputStream()); 


    %> 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     大家經(jīng)常在網(wǎng)上登陸的時候經(jīng)常會看到讓你輸入驗證碼,有的是文字的,有的呢是圖片,比如chinaren.com校友錄中留言的時候,我們就會看到數(shù)字圖片驗證碼;網(wǎng)上關(guān)于數(shù)字文字驗證碼實現(xiàn)方法的相關(guān)資料很多,而我們這里介紹的是數(shù)字和字母隨機(jī)組成的并且生成圖片的驗證碼的實現(xiàn)方法。看起來很復(fù)雜、其實很簡單的,大家跟著我往下看:

      首先,我們先介紹一下設(shè)計思路,數(shù)字和字母的隨機(jī)組合生成驗證碼,然后將驗證碼生成圖片,這里“數(shù)字和字母的組合”應(yīng)該是隨機(jī)取出來的;如果是專門的數(shù)字驗證碼,我們可以這樣實現(xiàn):

      ycodenum=4 '驗證碼的位數(shù),或者說成個數(shù)
      for i=1 to ycodenum
        Randomize '初始化隨機(jī)數(shù)發(fā)生器
        ycode=ycode&Int((9*Rnd)) 'rnd是隨機(jī)數(shù),從0到1之間的任意實數(shù),這里獲得0到9之間的整數(shù)
      next

      response.write ycode '就可以輸出數(shù)字驗證碼(4位)

      然而,我們要讓數(shù)字和字母同樣隨機(jī)生成,這里我們可以用到數(shù)組來實現(xiàn)這種效果,如下:

      ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" '將數(shù)字和大寫字母組成一個字符串
      yc=split(char,",") '將字符串生成數(shù)組
      ycodenum=4
      for i=1 to ycodenum
        Randomize
        ycode=ycode&yc(Int((35*Rnd))) '數(shù)組一般從0開始讀取,所以這里為35*Rnd
      next

      response.write ycode 
      
      現(xiàn)在看看輸出結(jié)果是不是數(shù)字和字母隨機(jī)組合的呢?

      下面看看怎樣生成圖片,這個也許有些朋友知道:asp不能生成圖片,必須使用asp組件。不錯,我們這里使用的是ASP圖象組件shotgraph。有一點(diǎn)大家注意,服務(wù)器不是自己的不能用哦,因為你裝不了這組件。

      組件的下載地址:  Response.BinaryWrite (img)

      針對以上代碼也就是說shotgraph普通的畫圖的原理請參考:
    http://www.pconline.com.cn/pcedu/empolder/wz/asp/10204/45207.html
    posted on 2005-11-17 09:40 安德爾斯 閱讀(1755) 評論(3)  編輯  收藏

    FeedBack:
    # re: 怎樣在JSP中生成驗證碼
    2006-09-08 17:08 | cc
    # re: 怎樣在JSP中生成驗證碼
    2006-11-05 15:27 | 數(shù)據(jù)恢復(fù)
    不錯~  回復(fù)  更多評論
      
    # re: 怎樣在JSP中生成驗證碼
    2007-12-01 13:30 | lollipop
    有些人注定要生活在彼岸,可以親近可以愛憐,甚至可以窮盡一生去思念,只是無法觸及有些距離,注定不能跨越只能倆倆相望,就像有些愛只能養(yǎng)在心里長在眼中,不能捧在手里放在身邊,注定只能邂逅無法遭遇!

    不錯!!!!!  回復(fù)  更多評論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 可以免费看黄的网站| 国产成人精品亚洲精品| 国产成人亚洲综合无| 亚洲精品成人片在线观看| 无码人妻久久一区二区三区免费| 亚洲一区二区三区在线| 亚洲国产一区二区三区| 久久国产精品2020免费m3u8| 亚洲国产成人久久精品软件| 国产亚洲色婷婷久久99精品| 野花高清在线观看免费3中文 | 亚洲成a人无码亚洲成av无码| MM131亚洲国产美女久久| 永久在线观看www免费视频| 污污的视频在线免费观看| 久久伊人久久亚洲综合| 日本不卡高清中文字幕免费| 四虎成人精品永久免费AV| 鲁死你资源站亚洲av| 久久久久亚洲AV片无码下载蜜桃| 全部免费国产潢色一级 | 又大又粗又爽a级毛片免费看| 丝瓜app免费下载网址进入ios | 亚洲av乱码一区二区三区按摩| 亚洲妇熟XXXX妇色黄| 国产免费怕怕免费视频观看| 精品无码无人网站免费视频 | 亚洲第一街区偷拍街拍| 亚洲gv猛男gv无码男同短文| 国产特级淫片免费看| 免费观看美女用震蛋喷水的视频| 72pao国产成视频永久免费| 亚洲日韩国产欧美一区二区三区 | 精品无码人妻一区二区免费蜜桃 | 亚洲毛片在线免费观看| 一二三区免费视频| 亚洲精品无码专区久久| 91在线亚洲精品专区| 国产精品亚洲片在线| 免费乱码中文字幕网站| 成人性生活免费视频|