亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

圖片驗證碼概述及實現(xiàn)步驟

 更新時間:2017年01月09日 15:57:53   作者:小偽桑  
本文主要介紹了圖片驗證碼概述及實現(xiàn)步驟。具有一定的參考價值,下面跟著小編一起來看下吧

一. 圖片驗證碼概述:

很多網站都有該實現(xiàn)

作用:

為了提高系統(tǒng)的安全性

有了驗證碼,我們就可以要求用戶在輸入用戶名,密碼等信息后,同時輸入圖片上的文字,用戶提交后,系統(tǒng)會首先從session中提取剛剛生成的驗證碼,并和用戶輸入的驗證碼進行比較,如果比較相等,表示用戶是從登錄界面登錄過來的,否則,表示用戶是非法的,我們使用驗證碼,是確保系統(tǒng)的使用必須要進行登錄成功之后,才能使用,避免用戶直接在地址欄中輸入要訪問的頁面。

也就是說,使用驗證碼,就強制用戶用戶必須先從登錄界面登錄

. 驗證實現(xiàn)方式

用到兩個關鍵類,這兩個類跟圖片的輸出是有關系的

BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一個參數(shù)im表示一個圖片對象
//JPG表示圖片輸出類型
//response.getOutputStream()代表一個響應的輸出流,也就是說,你訪問這個servlet.該servlet就會圖片顯示給你
ImageIO.write(im, "JPG",response.getOutputStream());

. 實現(xiàn)步驟

1.使用BufferedImage產生一個圖片,然后使用ImageIO輸出,并指定為JPG格式

BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一個參數(shù)im表示一個圖片對象
//JPG表示圖片輸出類型
//response.getOutputStream()代表一個響應的輸出流,也就是說,你訪問這個servlet.該servlet就會圖片顯示給你
ImageIO.write(im, "JPG",response.getOutputStream());

2.獲取圖片繪圖對象

Graphics g = im.getGraphics();

3.填充繪圖區(qū)域

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.向圖片中輸出數(shù)字

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位數(shù)字

//隨機產生4位數(shù)字
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.保存數(shù)字,以便進行登錄比較

//將得到的四個數(shù)字保存到session中,以便當用戶登錄的時候,用來比較
request.getSession().setAttribute("piccode", sbf.toString());

9.登錄驗證

首先,需要驗證該用戶在數(shù)據(jù)庫中是否存在,如果存在,還需要驗證輸入的驗證碼是否一致.

驗證成功后,需要轉發(fā)到相關的操作頁面.

代碼實例:

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");
 }
}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • Java設計模式的事件模型詳解

    Java設計模式的事件模型詳解

    這篇文章主要為大家詳細介紹了Java設計模式的事件模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java基于JDBC實現(xiàn)事務,銀行轉賬及貨物進出庫功能示例

    Java基于JDBC實現(xiàn)事務,銀行轉賬及貨物進出庫功能示例

    這篇文章主要介紹了Java基于JDBC實現(xiàn)事務,銀行轉賬及貨物進出庫功能,較為詳細的分析了事務操作的原理、實現(xiàn)方法及java基于jdbc連接數(shù)據(jù)庫實現(xiàn)銀行事務操作的相關技巧,需要的朋友可以參考下
    2017-12-12
  • SpringBoot中的文件上傳和異常處理詳解

    SpringBoot中的文件上傳和異常處理詳解

    這篇文章主要介紹了SpringBoot中的文件上傳和異常處理詳解,對于機器客戶端,它將生成JSON響應,其中包含錯誤,HTTP狀態(tài)和異常消息的詳細信息,對于瀏覽器客戶端,響應一個"whitelabel"錯誤視圖,以HTML格式呈現(xiàn)相同的數(shù)據(jù),需要的朋友可以參考下
    2023-09-09
  • 基于Java Tomcat和激活MyEclips的深入理解

    基于Java Tomcat和激活MyEclips的深入理解

    本篇文章是對Java中的Tomcat和激活MyEclips進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • logback如何自定義日志存儲

    logback如何自定義日志存儲

    這篇文章主要介紹了logback如何自定義日志存儲的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中ArrayList和SubList的坑面試題

    Java中ArrayList和SubList的坑面試題

    集合是Java開發(fā)日常開發(fā)中經常會使用到的,下面這篇文章主要給大家介紹了關于Java中ArrayList和SubList的坑面試題,需要的朋友可以參考下
    2022-05-05
  • JavaSE-面向對象(方法重寫)

    JavaSE-面向對象(方法重寫)

    子類在調用父類的私有方法中不能直接調用,但是可以通過get方法進行調用,修改屬性的值可以通過set方法進行修改。而子類想要修改父類中的方法可以使用方法重寫進行操作。
    2021-08-08
  • Java讀取其下所有文件夾與文件路徑的方法

    Java讀取其下所有文件夾與文件路徑的方法

    這篇文章主要為大家詳細介紹了Java讀取其下所有文件夾與文件路徑的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • java簡單實現(xiàn)復制 粘貼 剪切功能代碼分享

    java簡單實現(xiàn)復制 粘貼 剪切功能代碼分享

    本文給大家分享了一段java編寫的簡單實現(xiàn)復制粘貼剪切功能的代碼,需要的小伙伴可以直接拿走使用。如有更好的方案,也可以告之本人。
    2014-11-11
  • spring-boot-maven-plugin未指定版本導致的編譯錯誤問題

    spring-boot-maven-plugin未指定版本導致的編譯錯誤問題

    這篇文章主要介紹了spring-boot-maven-plugin未指定版本導致的編譯錯誤問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評論