欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一. 圖片驗(yàn)證碼概述:

很多網(wǎng)站都有該實(shí)現(xiàn)

作用:

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

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

也就是說(shuō),使用驗(yàn)證碼,就強(qiáng)制用戶(hù)用戶(hù)必須先從登錄界面登錄

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

用到兩個(gè)關(guān)鍵類(lèi),這兩個(gè)類(lèi)跟圖片的輸出是有關(guān)系的

BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一個(gè)參數(shù)im表示一個(gè)圖片對(duì)象
//JPG表示圖片輸出類(lèi)型
//response.getOutputStream()代表一個(gè)響應(yīng)的輸出流,也就是說(shuō),你訪問(wèn)這個(gè)servlet.該servlet就會(huì)圖片顯示給你
ImageIO.write(im, "JPG",response.getOutputStream());

. 實(shí)現(xiàn)步驟

1.使用BufferedImage產(chǎn)生一個(gè)圖片,然后使用ImageIO輸出,并指定為JPG格式

BufferedImage im = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
//第一個(gè)參數(shù)im表示一個(gè)圖片對(duì)象
//JPG表示圖片輸出類(lèi)型
//response.getOutputStream()代表一個(gè)響應(yīng)的輸出流,也就是說(shuō),你訪問(wèn)這個(gè)servlet.該servlet就會(huì)圖片顯示給你
ImageIO.write(im, "JPG",response.getOutputStream());

2.獲取圖片繪圖對(duì)象

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è)圖片的顏色
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("華文隸書(shū)",Font.BOLD|Font.ITALIC,28));
g.drawString("8", 1, 18);

5.隨機(jī)4位數(shù)字

//隨機(jī)產(chǎn)生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.隨機(jī)產(chǎn)生中文

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.在頁(yè)面中如何來(lái)引入該驗(yàn)證碼:

<img alt="驗(yàn)證碼" src="/ImageServlet">

8.保存數(shù)字,以便進(jìn)行登錄比較

//將得到的四個(gè)數(shù)字保存到session中,以便當(dāng)用戶(hù)登錄的時(shí)候,用來(lái)比較
request.getSession().setAttribute("piccode", sbf.toString());

9.登錄驗(yàn)證

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

驗(yàn)證成功后,需要轉(zhuǎn)發(fā)到相關(guān)的操作頁(yè)面.

代碼實(shí)例:

boolean b_exist = login.validate(username,passwd);
//如果該用戶(hù)存在
if(b_exist){
 String pic = ""+request.getSession().getAttribute("piccode");
 //比較驗(yàn)證碼
 if(!pic.equals("") && pic.equals(code)){
 //向session中存入用戶(hù)信息,以供其他中來(lái)使用
 request.getSession().setAttribute("username", username);
 
 response.sendRedirect("index.jsp");
 }
}

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Java設(shè)計(jì)模式的事件模型詳解

    Java設(shè)計(jì)模式的事件模型詳解

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

    Java基于JDBC實(shí)現(xiàn)事務(wù),銀行轉(zhuǎn)賬及貨物進(jìn)出庫(kù)功能示例

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

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

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

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

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

    logback如何自定義日志存儲(chǔ)

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

    Java中ArrayList和SubList的坑面試題

    集合是Java開(kāi)發(fā)日常開(kāi)發(fā)中經(jīng)常會(huì)使用到的,下面這篇文章主要給大家介紹了關(guān)于Java中ArrayList和SubList的坑面試題,需要的朋友可以參考下
    2022-05-05
  • JavaSE-面向?qū)ο?方法重寫(xiě))

    JavaSE-面向?qū)ο?方法重寫(xiě))

    子類(lèi)在調(diào)用父類(lèi)的私有方法中不能直接調(diào)用,但是可以通過(guò)get方法進(jìn)行調(diào)用,修改屬性的值可以通過(guò)set方法進(jìn)行修改。而子類(lèi)想要修改父類(lèi)中的方法可以使用方法重寫(xiě)進(jìn)行操作。
    2021-08-08
  • Java讀取其下所有文件夾與文件路徑的方法

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

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

    java簡(jiǎn)單實(shí)現(xiàn)復(fù)制 粘貼 剪切功能代碼分享

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

    spring-boot-maven-plugin未指定版本導(dǎo)致的編譯錯(cuò)誤問(wèn)題

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

最新評(píng)論