程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 圖片驗證碼概述及完成步驟

圖片驗證碼概述及完成步驟

編輯:關於JAVA

圖片驗證碼概述及完成步驟。本站提示廣大學習愛好者:(圖片驗證碼概述及完成步驟)文章只能為提供參考,不一定能成為您想要的結果。以下是圖片驗證碼概述及完成步驟正文


一. 圖片驗證碼概述:

很多網站都有該完成

作用:

為了進步零碎的平安性

有了驗證碼,我們就可以要求用戶在輸出用戶名,密碼等信息後,同時輸出圖片上的文字,用戶提交後,零碎會首先從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");
 }
}

以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved