專案簡單驗證碼

2021-08-09 16:50:45 字數 3360 閱讀 9045

一:作用

我們使用驗證碼,是確保系統的使用必須要進行登入成功之後,才能使用,避免使用者直接在位址列

中輸入要訪問的頁面也就是說,使用驗證碼,就強制使用者使用者必須先從登入介面登入

二:驗證實現方式

用到兩個關鍵類,這兩個類跟的輸出是有關係的

bufferedimage im = new bufferedimage(60,20,bufferedimage.type_int_rgb);

//第乙個引數im表示乙個物件

//jpg表示輸出型別

代表乙個響應的輸出流,也就是說,你訪問這個servlet.該

servlet就會顯示給你

三.實現步驟

1.使用bufferedimage產生乙個,然後使用imageio輸出,並指定為jpg格式

bufferedimage im = new bufferedimage(60,20,bufferedimage.type_int_rgb);

//第乙個引數im表示乙個物件

//jpg表示輸出型別

代表乙個響應的輸出流,也就是說,你訪問這個servlet.該servlet就會顯示給你

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++)

6.隨機產生中文

string str = "胸有激雷而面如平湖者可拜上將軍";

for(int i=0;i<4;i++)

7.在頁面中如何來引入該驗證碼:

8.儲存數字,以便進行登入比較

//將得到的四個數字儲存到session中,以便當使用者登入的時候,用來比較

request.getsession().setattribute("piccode", sbf.tostring());

9.登入驗證

首先,需要驗證該使用者在資料庫中是否存在,如果存在,還需要驗證輸入的驗證碼是否一致.

驗證成功後,需要**到相關的操作頁面.

**例項:

/**

*@author:

john

*@related

module

:登入*

@desc:

驗證碼*/

@controller

public class seccodecontroller catch (ioexception e)

}private string drawimg(bytearrayoutputstream output)

int width = 70

;int height = 25;//

在記憶體中建立一張

bufferedimage bi = new bufferedimage(width, height, bufferedimage.type_3byte_bgr

);font font = new font("times new roman"

, font.plain

, 20);

//建立乙個圖形(畫布

)graphics2d g = bi.creategraphics();

//設定寫入資料的字型,顏色

g.setfont(font);

color color = new color(66, 2

, 82);

g.setcolor(color);

g.setbackground(new color(226

, 226

, 240));

g.clearrect(0, 0

, width, height);

fontrendercontext context = g.getfontrendercontext();

rectangle2d bounds = font.getstringbounds(code, context);

double x = (width - bounds.getwidth()) / 2

;double y = (height - bounds.getheight()) / 2

;double ascent = bounds.gety();

double basey = y - ascent;

//向上寫資料

g.drawstring(code, (int) x, (int) basey);

g.dispose();

try catch (ioexception e)

return code;

} private char

randomchar()

}

//

基於規則表示式的替換,在用

,mbfw,

隔開返回陣列

//前端

var code = "qq123456789mbfw"+loginname+",mbfw,"+password+"qq123456789mbfw"+",mbfw,"+$("#code").val();

string keydata = pd.getstring("keydata").replaceall("qq123456789mbfw"

, "").replaceall("qq123456789mbfw"

, "").split(",mbfw,");

if (null != keydata && keydata.length == 3) else catch (authenticationexception e)

} else

} else

驗證碼 簡單驗證碼識別

這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...

簡單驗證碼

嘿嘿長跟給我 的,自己要努力學習一下了呵呵 private string validata bitmap objbitmap new bitmap 60,40 graphics objgraphics objgraphics graphics.fromimage objbitmap objgraph...

簡單驗證碼識別

最近幾天比較空閒,於是也模仿網上的文章搞了搞驗證碼識別,當然是那些工整,規則,無碼,無干擾,灰常純淨與單純的驗證碼.當然也看了下網上找到的複雜的驗證碼 車牌號 識別資料,無奈做為乙個半路出家,江湖四流的程式設計師,面對那麼多數學公式只能做罷,一直以自己英語不好而痛心疾首,今天又認識到數學更是障礙,記...