Java Web實踐專題——圖形驗證碼的產生與使用

來源:互聯網
上載者:User
 

圖形驗證碼的主要目的是為了增強的安全性,增加使用者通過遍曆所有可能性來破解密碼的難度。圖形驗證碼的使用包括如下3部分:l         圖形驗證碼的產生;l         在頁面中的使用;l         驗證;1、圖形驗證碼的產生假設在Servlet產生圖形驗證碼,在JavaBean或者JSP中產生的基本過程是相同的。設計如下過程:l         設定響應的文件類型;l         產生隨機碼;l         把隨機碼儲存到session中;l         產生圖片;l         把隨機碼畫到記憶體配置圖片上;l         把記憶體配置圖片發送到用戶端;1.1 設定響應的文件類型在對使用者進行響應的時候,需要設定文件類型,要產生圖片文件類型可以設定為:image/gif。在Servlet中的設定方式為:response.setContentType("image/gif");如果在JSP頁面中使用則需要使用:<%@ page contentType="image/gif"%>1.2 產生隨機碼可以根據各種隨機數建置原則來產生,並且可以設定隨機碼有哪些字元組成以及隨機碼的長度。本文給出的隨機碼字元是所有字母和數字。使用的隨機碼建置原則使用的是Random對象提供的。參考代碼如下:隨機碼字元列表:   public static final char[] code = {'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',                                    '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',                                    '0','1','2','3','4',                                    '5','6','7','8','9'};產生隨機碼的代碼:     StringBuffer checkcode=new StringBuffer();      // 每迴圈一次,產生一位     for(int i=0;i<code_length;i++)     {        int generated=(new Random()).nextInt(62);        checkcode.append(code[generated]);     }1.3 把隨機碼儲存到session中為了在使用者提交驗證碼之後進行驗證,需要儲存產生的驗證碼,可以儲存在session中。在Servlet中需要先擷取session對象,然後再使用。下面是參考代碼:     // 把產生的驗證碼儲存到session中     HttpSession   session=request.getSession(true);      session.setAttribute("checkCode",checkcode.toString());1.4 產生圖片使用BufferedImage類建立對象,然後使用畫圖對象畫圖。下面是參考代碼:     // 建立記憶體配置圖片,參數為圖片的大小以及類型     BufferedImage   image = new   BufferedImage(49,14,BufferedImage.TYPE_INT_RGB);     // 得到Graphics控制代碼     Graphics   g = image.getGraphics();      // 設定畫筆顏色     // g.setColor(Color.yellow);      // 畫背景     g.fillRect(0,1,49,12);1.5 把隨機碼顯示在圖片上參考下面的代碼:     // 設定字型色     g.setColor(Color.black);     // 畫驗證碼     g.drawString(checkcode.toString(),4,11);      // 圖象生效     g.dispose();1.6 把產生的圖片發送到用戶端參考代碼如下:     ImageIO.write(image, "JPEG", response.getOutputStream());這樣就完成了動態圖形驗證碼的產生。2、在頁面中使用圖形碼:與使用其它圖形的方式相同,使用<img src=”…”>標籤。假設產生圖片的Servlet的url-pattern值為checkcode,則在頁面中載入圖片的代碼如下:<img border=0 src="checkcode">3、驗證擷取使用者輸入的驗證碼,然後從session中擷取儲存的驗證碼,對比來確定是否相同,從而完成驗證。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.