圖片驗證碼概述及完成步驟。本站提示廣大學習愛好者:(圖片驗證碼概述及完成步驟)文章只能為提供參考,不一定能成為您想要的結果。以下是圖片驗證碼概述及完成步驟正文
一. 圖片驗證碼概述:
很多網站都有該完成
作用:
為了進步零碎的平安性
有了驗證碼,我們就可以要求用戶在輸出用戶名,密碼等信息後,同時輸出圖片上的文字,用戶提交後,零碎會首先從session中提取剛剛生成的驗證碼,並和用戶輸出的驗證碼停止比擬,假如比擬相等,表示用戶是從登錄界面登錄過去的,否則,表示用戶是合法的,我們運用驗證碼,是確保零碎的運用必需要停止登錄成功之後,才干運用,防止用戶直接在地址欄中輸出要訪問的頁面。
也就是說,運用驗證碼,就強迫用戶用戶必需先從登錄界面登錄
二. 驗證明現方式
用到兩個關鍵類,這兩個類跟圖片的輸入是有關系的
BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB); //第一個參數im表示一個圖片對象 //JPG表示圖片輸入類型 //response.getOutputStream()代表一個呼應的輸入流,也就是說,你訪問這個servlet.該servlet就會圖片顯示給你 ImageIO.write(im, "JPG",response.getOutputStream());
三. 完成步驟
1.運用BufferedImage發生一個圖片,然後運用ImageIO輸入,並指定為JPG格式
BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB); //第一個參數im表示一個圖片對象 //JPG表示圖片輸入類型 //response.getOutputStream()代表一個呼應的輸入流,也就是說,你訪問這個servlet.該servlet就會圖片顯示給你 ImageIO.write(im, "JPG",response.getOutputStream());
2.獲取圖片繪圖對象
Graphics g = im.getGraphics();
3.填充繪圖區域
Random rm = new Random(); Color c = new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255)); g.setColor(c); //填充整個圖片的顏色 g.fillRect(0, 0, 60, 20);
4.向圖片中輸入數字
g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255))); g.setFont(new Font("華文隸書",Font.BOLD|Font.ITALIC,28)); g.drawString("8", 1, 18);
5.隨機4位數字
//隨機發生4位數字 for(int i=0;i<4;i++){ g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255))); g.setFont(new Font("Gungsuh",Font.BOLD|Font.ITALIC,22)); g.drawString(""+rm.nextInt(10), (i*15)+2, 18); }
6.隨機發生中文
String str = "胸有激雷而面如平湖者可拜上將軍"; for(int i=0;i<4;i++){ g.setColor(new Color(rm.nextInt(255),rm.nextInt(255),rm.nextInt(255))); g.setFont(new Font("Gungsuh",Font.BOLD|Font.ITALIC,15)); g.drawString(""+str.charAt(rm.nextInt(str.length())), (i*15)+2, 18); }
7.在頁面中如何來引入該驗證碼:
<img alt="驗證碼" src="/ImageServlet">
8.保管數字,以便停止登錄比擬
//將失掉的四個數字保管到session中,以便利用戶登錄的時分,用來比擬 request.getSession().setAttribute("piccode", sbf.toString());
9.登錄驗證
首先,需求驗證該用戶在數據庫中能否存在,假如存在,還需求驗證輸出的驗證碼能否分歧.
驗證成功後,需求轉發到相關的操作頁面.
代碼實例:
boolean b_exist = login.validate(username,passwd); //假如該用戶存在 if(b_exist){ String pic = ""+request.getSession().getAttribute("piccode"); //比擬驗證碼 if(!pic.equals("") && pic.equals(code)){ //向session中存入用戶信息,以供其他中來運用 request.getSession().setAttribute("username", username); response.sendRedirect("index.jsp"); } }
以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!