資源描述:
《java編寫(xiě)最簡(jiǎn)單的登錄驗(yàn)證碼》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、使用JAVA的awt包可以提供創(chuàng)建和修改圖像的各種類(lèi)。使用流框架來(lái)處理圖像,該框架涉及圖像生產(chǎn)者、可選的圖像過(guò)濾器和圖像使用者。有了強(qiáng)大的awt包就可以做一個(gè)簡(jiǎn)單的登錄驗(yàn)證碼了,先看一下效果圖:廢話(huà)不多說(shuō)其實(shí)登錄驗(yàn)證碼他不是一個(gè)固定的圖片,他只是一個(gè)java代碼向jsp頁(yè)面輸出的圖片流而已。首先需要在登錄頁(yè)面使用標(biāo)簽,在src中鏈接到編程好的jsp頁(yè)面。其中這個(gè)jsp頁(yè)面是最重要的,以下是代碼Jsp代碼1<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>2
2、<%@pagelanguage="java"import="java.awt.image.*"%>3<%@pagelanguage="java"import="java.awt.*"%>4<%@pagelanguage="java"import="javax.imageio.*"%>56<%7//創(chuàng)建一個(gè)圖像緩沖區(qū)對(duì)象相當(dāng)于一張紙參數(shù)分別為寬、高、圖像類(lèi)型8BufferedImagebi=newBufferedImage(60,20,BufferedImage.TYPE_USHORT_555_RGB);9//得到制圖對(duì)象相當(dāng)于你得到了一支筆1
3、0Graphicsg=bi.getGraphics();11//設(shè)置上下文顏色相當(dāng)于背景顏色12g.setColor(Color.GREEN);13//進(jìn)行填充x、y、width、height14g.fillRect(0,0,60,20);12Randomrd=newRandom();3//干擾紋4g.setColor(Color.GRAY);5//15條干擾紋6for(inti=0;i<15;i++){7g.drawLine(rd.nextInt(61),rd.nextInt(21),rd.nextInt(61),rd.nextInt(21
4、));8}910//設(shè)置驗(yàn)證碼1112Stringcode="";13Stringstr="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";14for(inti=0;i<4;i++){15code+=str.charAt(rd.nextInt(str.length()));16}1718request.getSession().setAttribute("code",code);19//設(shè)置字的顏色20g.setColor(Color.BLUE);21//設(shè)置字體
5、22g.setFont(newFont("黑體",Font.BOLD,18));23//在圖像上下文開(kāi)始畫(huà)由String的文本24g.drawString(code,10,15);2526//使用圖片輸出流輸出(紙,格式,輸出方式)27ImageIO.write(bi,"jpeg",response.getOutputStream());28out.clear();29out=pageContext.pushBody();30%>當(dāng)上面的代碼都已經(jīng)搞定之后,回到你需要加入驗(yàn)證碼的頁(yè)面Html代碼316、驗(yàn)證碼頁(yè)面鏈接"alt="點(diǎn)擊更換"width="60"height="20"onclick="refreshImg();"/>最后我加入了一個(gè)點(diǎn)擊事件用于再次刷新驗(yàn)證碼,差不多一個(gè)簡(jiǎn)單的驗(yàn)證碼就完成了!