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

一.圖片驗證碼概述:

很多網(wǎng)站都有該實現(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.在頁面中如何來引入該驗證碼:

驗證碼

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

}

}

四.參考資料:

http://blog.163.com/jackie_howe/blog/static/199491347201272410322219/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勿她,隨后出現(xiàn)的幾起案子钳枕,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妹蔽,死亡現(xiàn)場離奇詭異沥匈,居然都是意外死亡,警方通過查閱死者的電腦和手機罕容,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門备恤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來稿饰,“玉大人,你說我怎么就攤上這事露泊『砹” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵惭笑,是天一觀的道長侣姆。 經(jīng)常有香客問我,道長沉噩,這世上最難降的妖魔是什么捺宗? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮川蒙,結果婚禮上蚜厉,老公的妹妹穿的比我還像新娘。我一直安慰自己畜眨,他們只是感情好昼牛,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著康聂,像睡著了一般贰健。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恬汁,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天霎烙,我揣著相機與錄音,去河邊找鬼蕊连。 笑死悬垃,一個胖子當著我的面吹牛,可吹牛的內容都是我干的甘苍。 我是一名探鬼主播尝蠕,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼载庭!你這毒婦竟也來了看彼?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤囚聚,失蹤者是張志新(化名)和其女友劉穎靖榕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顽铸,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡茁计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谓松。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片星压。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡践剂,死狀恐怖,靈堂內的尸體忽然破棺而出娜膘,到底是詐尸還是另有隱情逊脯,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布竣贪,位于F島的核電站军洼,受9級特大地震影響,放射性物質發(fā)生泄漏演怎。R本人自食惡果不足惜歉眷,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颤枪。 院中可真熱鬧,春花似錦淑际、人聲如沸畏纲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盗胀。三九已至,卻和暖如春锄贼,著一層夾襖步出監(jiān)牢的瞬間票灰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工宅荤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屑迂,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓冯键,卻偏偏與公主長得像惹盼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惫确,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內容

  • http://blog.csdn.net/ayhlay/article/details/13625275 1.驗證...
    蘋果_283e閱讀 447評論 0 0
  • Spring mvc之java實現(xiàn)登陸時驗證碼邏輯 摘要 一個優(yōu)良的web系統(tǒng)的登陸模塊或者功能手报,為了防止機器暴力...
    森森不熄閱讀 3,052評論 1 1
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,092評論 25 707
  • 新建JSP文件 如code.jsp 復制如下代碼 <%@ page language="java" content...
    矯矯矯閱讀 338評論 0 0
  • Java動態(tài)代理 引言 最近在看AOP代碼,其中利用到了Java動態(tài)代理機制來實現(xiàn)AOP織入改化。所以好好地把Java...
    草捏子閱讀 1,534評論 0 18