日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法

瀏覽:51日期:2022-08-12 16:27:56

效果圖如下:

java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法

1.適用需求

后臺(tái)生成驗(yàn)證碼,用于登陸驗(yàn)證。

2. 功能實(shí)現(xiàn)所需控件/文件:

無(普通標(biāo)簽)

3.功能點(diǎn)實(shí)現(xiàn)思路

1)前臺(tái)思路:

(1)前臺(tái)一個(gè)<input>用于輸入驗(yàn)證碼;一個(gè)<img>用于展示驗(yàn)證碼。

(2)驗(yàn)證碼生成以及展示,點(diǎn)擊刷新功能,可以為<img>綁定click事件。

(3)click事件里面寫ajax請求,通過后臺(tái)生成處理好的帶噪點(diǎn)的驗(yàn)證碼圖片。

注意:后臺(tái)直接返回圖片,不是驗(yàn)證碼的字符!若返回字符,則驗(yàn)證碼就失去了意義(前臺(tái)很容易就可以獲取驗(yàn)證碼字符,進(jìn)行多次惡意訪問了)(這點(diǎn)考慮了系統(tǒng)安全性)

(4)關(guān)于返回的圖片如何在<img>標(biāo)簽內(nèi)展示

直接利用img的src屬性,屬性值為后臺(tái)生成驗(yàn)證碼的方法請求路徑即可。當(dāng)點(diǎn)擊驗(yàn)證碼的時(shí)候,再動(dòng)態(tài)設(shè)置src屬性即可(原訪問地址+隨機(jī)時(shí)間戳,防止同一路徑瀏覽器不另作訪問的問題)

前臺(tái)部分代碼:

/*驗(yàn)證碼輸入框*/ <input name='verifyInput' placeholder='請輸入驗(yàn)證碼'> /*驗(yàn)證碼圖片*/ <img onclick='changeCode()' src='http://www.b3g6.com/bcjs/getVerifyCode'> //src的getVerifyCode是后臺(tái)訪問地址;項(xiàng)目為SSM框架。 /*點(diǎn)擊刷新驗(yàn)證碼*/ function changeCode(){ var src = 'http://www.b3g6.com/bcjs/ getVerifyCode?'+new Date().getTime(); //加時(shí)間戳,防止瀏覽器利用緩存 $(’.verifyCode’).attr('src',src); //jQuery寫法 }

2)后臺(tái)思路:

后臺(tái)思路很簡單,利用BufferedImage類創(chuàng)建一張圖片,再用Graphics2D對圖片進(jìn)行繪制(生成隨機(jī)字符,添加噪點(diǎn),干擾線)即可。注意生成的驗(yàn)證碼字符串要放到session中,用于接下來登陸的驗(yàn)證碼驗(yàn)證(當(dāng)然也是后臺(tái))。

部分代碼如下:

/* 獲取驗(yàn)證碼圖片*/ @RequestMapping('/getVerifyCode ') public void getVerificationCode(HttpServletResponse response,HttpServletRequest request) { try { int width=200; int height=69; BufferedImage verifyImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //生成對應(yīng)寬高的初始圖片 String randomText = VerifyCode.drawRandomText(width,height,verifyImg); //單獨(dú)的一個(gè)類方法,出于代碼復(fù)用考慮,進(jìn)行了封裝。 //功能是生成驗(yàn)證碼字符并加上噪點(diǎn),干擾線,返回值為驗(yàn)證碼字符 request.getSession().setAttribute('verifyCode', randomText); response.setContentType('image/png');//必須設(shè)置響應(yīng)內(nèi)容類型為圖片,否則前臺(tái)不識(shí)別 OutputStream os = response.getOutputStream(); //獲取文件輸出流 ImageIO.write(verifyImg,'png',os);//輸出圖片流 os.flush(); os.close();//關(guān)閉流 } catch (IOException e) { this.logger.error(e.getMessage()); e.printStackTrace(); } }

/*對圖片進(jìn)行處理的類和方法*/ public class VerifyCode { public static String drawRandomText(int width,int height,BufferedImage verifyImg) { Graphics2D graphics = (Graphics2D)verifyImg.getGraphics(); graphics.setColor(Color.WHITE);//設(shè)置畫筆顏色-驗(yàn)證碼背景色 graphics.fillRect(0, 0, width, height);//填充背景graphics.setFont(new Font('微軟雅黑', Font.BOLD, 40));//數(shù)字和字母的組合String baseNumLetter= = '123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'; StringBuffer sBuffer = new StringBuffer();int x = 10; //旋轉(zhuǎn)原點(diǎn)的 x 坐標(biāo)String ch = '';Random random = new Random();for(int i = 0;i < 4;i++){ graphics.setColor(getRandomColor()); //設(shè)置字體旋轉(zhuǎn)角度 int degree = random.nextInt() % 30; //角度小于30度 int dot = random.nextInt(baseNumLetter.length()); ch = baseNumLetter.charAt(dot) + ''; sBuffer.append(ch); //正向旋轉(zhuǎn) graphics.rotate(degree * Math.PI / 180, x, 45); graphics.drawString(ch, x, 45); //反向旋轉(zhuǎn) graphics.rotate(-degree * Math.PI / 180, x, 45); x += 48;}//畫干擾線for (int i = 0; i <6; i++) { // 設(shè)置隨機(jī)顏色 graphics.setColor(getRandomColor()); // 隨機(jī)畫線 graphics.drawLine(random.nextInt(width), random.nextInt(height), random.nextInt(width), random.nextInt(height));}//添加噪點(diǎn)for(int i=0;i<30;i++){ int x1 = random.nextInt(width); int y1 = random.nextInt(height); graphics.setColor(getRandomColor()); graphics.fillRect(x1, y1, 2,2); }return sBuffer.toString(); } /** * 隨機(jī)取色 */ private static Color getRandomColor() {Random ran = new Random();Color color = new Color(ran.nextInt(256),ran.nextInt(256), ran.nextInt(256));return color; }}4.功能實(shí)現(xiàn)心得:

驗(yàn)證碼的功能實(shí)現(xiàn)思路很簡單,從系統(tǒng)安全性和代碼復(fù)用性這兩點(diǎn)考慮,驗(yàn)證碼必須后臺(tái)生成,生成驗(yàn)證碼的方法可以封裝到靜態(tài)工具類里。此外,后臺(tái)用到許多Java自帶的圖片處理類值得學(xué)習(xí)。

到此這篇關(guān)于java后臺(tái)驗(yàn)證碼生成的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)java 驗(yàn)證碼生成內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
成人在线免费观看网站| 91成人在线精品视频| 国产精品2区| 国产精品一区高清| 国产精品xxxav免费视频| 亚洲精品一级| 欧美一级网站| 美女精品视频在线| 国产成人精品一区二区三区免费| 国产精品成人a在线观看| 国产精品国产三级国产在线观看| 中文在线а√在线8| 极品日韩av| 一区二区精彩视频| 欧美亚洲一区二区三区| 麻豆成人av在线| а√天堂8资源中文在线| 天堂av在线| 不卡视频在线| 日韩精品一区二区三区中文字幕| 婷婷亚洲精品| 老色鬼精品视频在线观看播放| 国产福利片在线观看| 91精品精品| 亚洲深深色噜噜狠狠爱网站 | 91综合网人人| 国内亚洲精品| 亚洲视频国产| 九九久久国产| 欧美影院三区| 亚洲91在线| 成人在线视频免费看| 不卡视频在线| 亚洲精品黄色| 精品三级国产| 亚州av乱码久久精品蜜桃| 日韩黄色av| 高清久久精品| 99在线精品视频在线观看| 日韩福利视频网| 在线精品亚洲欧美日韩国产| 美女精品在线| 免费在线亚洲| 99成人在线| 麻豆一区二区三区| 欧美成人高清| 国产精品亲子伦av一区二区三区 | 精品黄色一级片| 日韩一级不卡| 久久69成人| 久热精品在线| 欧美国产精品| 国产婷婷精品| 精品女同一区二区三区在线观看| 日韩午夜精品| 麻豆高清免费国产一区| 国产亚洲精品久久久久婷婷瑜伽| 久久国产精品美女| 国产婷婷精品| 成人亚洲一区二区| 亚洲综合欧美| 国产一区二区久久久久| 亚洲在线观看| 精品三级av| 视频一区日韩| 精品一区二区三区四区五区| 亚洲深夜福利| 成人在线视频区| 视频在线观看一区| 日韩欧美午夜| 国产九九精品| 久色成人在线| 久久精品国产大片免费观看| 老司机免费视频一区二区| 亚洲丝袜啪啪| 婷婷综合在线| 成人精品国产亚洲| 日本一区中文字幕| 欧美另类综合| 亚洲女同av| 欧美国产中文高清| 日韩精品一区二区三区中文在线| 欧美91精品| 久草免费在线视频| 国产亚洲精品美女久久| 蜜臀a∨国产成人精品| 亚洲一卡久久| 亚洲福利专区| 精品国产18久久久久久二百| 日本午夜精品久久久| 香蕉精品999视频一区二区| 香蕉视频亚洲一级| 久久wwww| 日本91福利区| 亚洲精品在线国产| 国产偷自视频区视频一区二区| 在线天堂资源www在线污| 国产精品日本一区二区不卡视频| 日韩中文欧美在线| 99国产精品免费视频观看| 国产精品最新| 在线国产日韩| 樱桃成人精品视频在线播放| 欧美sss在线视频| 国产一区二区三区亚洲综合| 国产麻豆精品久久| 青青草国产精品亚洲专区无| 亚洲欧美日韩国产| 99国产精品| 国产亚洲福利| 99香蕉国产精品偷在线观看 | 亚洲精品成人一区| 日精品一区二区三区| 日韩中文欧美在线| 亚洲小说春色综合另类电影| 亚洲综合中文| 日本一不卡视频| 日欧美一区二区| 亚洲a成人v| 日韩av一区二区三区四区| 日本特黄久久久高潮| 国产日韩一区| 欧美激情aⅴ一区二区三区| 麻豆免费精品视频| 国产一区二区三区亚洲| 中文字幕在线高清| 天堂日韩电影| 精品91久久久久| 日韩在线观看一区二区| 伊人久久亚洲| 欧美日韩精品一区二区三区视频 | 国产欧美日韩影院| 国产精品极品| 成人在线超碰| 日本欧美不卡| 日韩一级网站| 亚欧洲精品视频在线观看| 婷婷精品在线| 国产激情久久| 日韩一区二区三区免费播放| 亚洲视频综合| 丝袜a∨在线一区二区三区不卡| 日本欧美在线看| 日韩福利视频一区| 精品一区二区三区中文字幕| 日韩一区二区在线免费| 国产精品99一区二区| 模特精品在线| 欧美偷窥清纯综合图区| 精品久久国产一区| 亚洲国内精品| 亚洲伊人影院| 久久中文字幕导航| 天堂资源在线亚洲| 亚洲一级大片| 久久伊人国产| 欧美手机在线| 日本一区二区中文字幕| 久久不卡国产精品一区二区| 日韩一区自拍| 男人操女人的视频在线观看欧美| 日韩福利在线观看| 成人在线视频免费看| 亚洲女同中文字幕| 国产欧美激情| 亚洲特色特黄| 欧美一级全黄| 亚洲成av人片一区二区密柚| 亚洲小说春色综合另类电影| 老司机精品视频在线播放| 五月精品视频| 久久激五月天综合精品| 欧美天堂视频| 亚洲精品激情| 在线亚洲人成| 日韩精品视频网站| а√在线中文在线新版| 美女精品在线| 国产精品麻豆久久| 在线精品福利| 日韩大片在线播放| 日韩av资源网| 激情综合网址| 麻豆精品视频在线| 老牛国产精品一区的观看方式| 国产精东传媒成人av电影| 欧美日韩免费观看一区=区三区 | 岛国av在线网站| 亚洲精品在线a| 神马久久午夜| 日韩精品一区二区三区av | 日韩福利视频导航| 激情久久中文字幕| 久久av影视| 亚洲一区二区三区在线免费| 九九精品调教| 欧美精品aa| 一区二区三区四区日韩| 午夜精品久久久久久久久久蜜桃| 青草综合视频|