成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > JSP實用教程之簡易圖片驗證碼的實現(xiàn)方法(附源碼)

JSP實用教程之簡易圖片驗證碼的實現(xiàn)方法(附源碼)

熱門標簽:電銷機器人免培訓 潤滑油銷售電銷機器人 電話機器人需要使用網(wǎng)絡(luò)嗎 南通通訊外呼系統(tǒng)產(chǎn)品介紹 海外圖書館地圖標注點 給地圖標注得傭金 如何看懂地圖標注點 自繪地圖標注數(shù)據(jù) 外呼系統(tǒng)使用方法

前言

很多新手對圖片驗證碼不是很了解,所以本文嘗試通過一個簡單的 JSP 小程序來實現(xiàn)驗證碼功能。文中給出了詳細的示例代碼,文末給出了完整實例代碼的下載地址,下面話不多說了,來一起看看詳細的介紹吧。

效果圖

示例代碼

前臺代碼如下:

form action="action.jsp" method="POST"> 
 label> 用戶名: 
 input type="text" name="name" data-singleTips="請輸入用戶名" value="admin" /> 
 /label> 
 label> 密碼: input type="password" name="password" /> 
 /label> 
 !-- 驗證碼 --> 
 label class="captchaCode"> 
 驗證碼: img src="img.jsp" style="cursor: pointer;" onclick="this.src=this.src + '?' + new Date().valueOf();" /> 
 input type="text" name="captchaImgCode" /> 
 /label> 
 div> 
 input type="submit" value="登錄" /> 
 
 /div> 
/form> 

驗證碼圖片從何而來? img.jsp 是也:

%@include file="captcha.jsp"%> 
% 
 init(pageContext);// 加載圖片 
%> 

返回圖片的數(shù)據(jù)流。

action.jsp 這里不作用戶名或密碼的檢驗,只是單純驗證碼檢驗。

如果輸入驗證碼通過,顯示如下:

反之,給出已捕獲的異常:

action.jsp 就是調(diào)用 captcha.jsp 里面的 isPass(pageContext, captchaImgCode) 方法,以及捕獲已知異常。

%@page pageEncoding="UTF-8"%> 
%@include file="captcha.jsp"%> 
% 
 String captchaImgCode = request.getParameter("captchaImgCode"); 
 try { 
 if (isPass(pageContext, captchaImgCode)) { 
 out.println("驗證碼通過!"); 
 } 
 } catch (Throwable e) { 
 out.println(e); 
 } 
%> 

核心 captcha,jsp 代碼:

%@page pageEncoding="UTF-8" import="java.io.IOException, java.awt.*, java.awt.image.BufferedImage, java.util.Random, javax.imageio.ImageIO"%> 
%! 
 // 定義Captcha 類 
 public static class Captcha { 
 /** 
 * 默認寬度 60 
 */ 
 private int width = 60; 
 
 /** 
 * 默認高度 20 
 */ 
 private int height = 20; 
 
 /** 
 * 驗證碼 
 */ 
 private String code; 
 
 /** 
 * 生成驗證碼圖片 
 * 
 * @return 圖片對象 
 */ 
 public BufferedImage get() { 
 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 在內(nèi)存中創(chuàng)建圖像 
 Graphics g; 
 
 g = image.getGraphics(); // 獲取圖形上下文 
 g.setColor(getRandColor(200, 250)); // 設(shè)定背景 
 g.fillRect(0, 0, width, height); 
 g.setFont(new Font("Times New Roman", Font.PLAIN, 18)); // 設(shè)定字體 
 g.setColor(getRandColor(160, 200)); 
 
 Random random = new Random();// 隨機產(chǎn)生干擾線 
 for (int i = 0; i  155; i++) { 
 int x = random.nextInt(width), y = random.nextInt(height); 
 int xl = random.nextInt(12), yl = random.nextInt(12); 
 g.drawLine(x, y, x + xl, y + yl); 
 } 
 
 String sRand = ""; // 隨機產(chǎn)生4位驗證碼 
 for (int i = 0; i  4; i++) { 
 String rand = String.valueOf(random.nextInt(10)); 
 sRand += rand; 
 g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); // 將認證碼顯示到圖象中 
 g.drawString(rand, 13 * i + 6, 16);// 調(diào)用函數(shù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成 
 } 
 
 // 將認證碼存入SESSION 
 // session.setAttribute("rand", sRand); 
 setCode(sRand); 
 g.dispose();// 圖象生效 
 
 return image; 
 } 
 
 /** 
 * 生成隨機顏色 
 * 
 * @param fc 
 * @param bc 
 * @return 
 */ 
 private Color getRandColor(int fc, int bc) { 
 if (fc > 255) 
 fc = 255; 
 if (bc > 255) 
 bc = 255; 
 
 Random random = new Random(); 
 int r = fc + random.nextInt(bc - fc); 
 int g = fc + random.nextInt(bc - fc); 
 int b = fc + random.nextInt(bc - fc); 
 
 return new Color(r, g, b); 
 } 
 
 /** 
 * 獲取高度 
 * 
 * @return 
 */ 
 public int getHeight() { 
 return height; 
 } 
 
 /** 
 * 設(shè)置高度 
 * 
 * @param height 
 * 高度 
 */ 
 public void setHeight(int height) { 
 this.height = height; 
 } 
 
 /** 
 * 獲取驗證碼 
 * 
 * @return 
 */ 
 public String getCode() { 
 return code; 
 } 
 
 /** 
 * 設(shè)置驗證碼 
 * 
 * @param code 
 * 驗證碼 
 */ 
 public void setCode(String code) { 
 this.code = code; 
 } 
 
 /** 
 * 獲取寬度 
 * 
 * @return 
 */ 
 public int getWidth() { 
 return width; 
 } 
 
 /** 
 * 設(shè)置寬度 
 * 
 * @param width 
 * 寬度 
 */ 
 public void setWidth(int width) { 
 this.width = width; 
 } 
 
 } 
 
 
 /** 
 * SESSION 的鍵值 
 */ 
 public static final String SESSION_KEY = "rand"; 
 
 /** 
 * 顯示驗證碼圖片并將認證碼存入 Session 
 * 
 * @param response 
 * 響應(yīng)對象 
 * @param session 
 * 會話對象 
 */ 
 public static void init(HttpServletResponse response, HttpSession session) { 
 Captcha img = new Captcha(); 
 
 // 不用緩存 
 response.setHeader("Pragma", "No-cache"); 
 response.setHeader("Cache-Control", "no-cache"); 
 response.setDateHeader("Expires", 0); 
 response.setContentType("image/jpg"); 
 
 try { 
 ImageIO.write(img.get(), "JPEG", response.getOutputStream()); 
 
 /* 
 * 加上下面代碼,運行時才不會出現(xiàn)java.lang.IllegalStateException: getOutputStream() has already been called ..........等異常 
 * response.getOutputStream().flush(); 
 * response.getOutputStream().close(); 
 * response.flushBuffer(); 
 */ 
 
 // JSP內(nèi)置對象out和response.getWrite()的區(qū)別,兩者的主要區(qū)別:1. 這兩個對象的類型是完全不同的…… 
 // response.getWriter(); 
 // http://blog.sina.com.cn/s/blog_7217e4320101l8gq.html 
 // https://www.jb51.net/kf/201109/103284.html 
 
 // pageContext.getOut().clear(); 
 } catch (IOException e) { 
 e.printStackTrace(); 
 } 
 
 session.setAttribute(SESSION_KEY, img.getCode()); // 將認證碼存入 SESSION 
 System.out.println("生成驗證碼:" + img.getCode()); 
 } 
 
 /** 
 * 顯示驗證碼圖片并將認證碼存入 Session(For JSP) 
 * 
 * @param pageContext 
 * 頁面上下文對象 
 */ 
 public static void init(PageContext pageContext) { 
 init((HttpServletResponse) pageContext.getResponse(), pageContext.getSession()); 
 } 
 
 
 /** 
 * 判斷用戶輸入的驗證碼是否通過 
 * 
 * @param pageContext 
 * 頁面上下文對象 
 * @return true 表示通過 
 * @throws Throwable 
 */ 
 public static boolean isPass(PageContext pageContext, String code) throws Throwable { 
 boolean isCaptchaPass = false; 
 
 String rand = (String) pageContext.getSession().getAttribute(SESSION_KEY); 
 
 System.out.println("rand:" + rand); 
 System.out.println("CaptchaCode:" + code); 
 
 if (rand == null) 
 throw new UnsupportedOperationException("請刷新驗證碼。"); 
 else if (code == null || code.equals("")) { 
 throw new IllegalArgumentException("沒提供驗證碼參數(shù)"); 
 } else { 
 isCaptchaPass = rand.equals(code); 
 if (!isCaptchaPass) 
 throw new IllegalAccessError("驗證碼不正確"); 
 } 
 
 return isCaptchaPass; 
 } 
%> 

完整代碼下載:http://xiazai.jb51.net/201707/yuanma/Captcha(jb51.net).rar

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • JSP開發(fā)之生成圖片驗證碼技術(shù)的詳解

標簽:樂山 廣州 南京 銅川 貸款邀約 大連 黃石 內(nèi)江

巨人網(wǎng)絡(luò)通訊聲明:本文標題《JSP實用教程之簡易圖片驗證碼的實現(xiàn)方法(附源碼)》,本文關(guān)鍵詞  JSP,實用,教程,之,簡易,圖片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JSP實用教程之簡易圖片驗證碼的實現(xiàn)方法(附源碼)》相關(guān)的同類信息!
  • 本頁收集關(guān)于JSP實用教程之簡易圖片驗證碼的實現(xiàn)方法(附源碼)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    性生活黄色大片| 136fldh精品导航福利| 欧美精品久久久久久久多人混战| 老色鬼精品视频在线观看播放| 亚洲另类视频| 男人j进女人j| 国产高潮呻吟久久| 国产蜜臀一区二区打屁股调教| 国产精品久久久久一区二区| 国产福利三区| 黄色大片网站| 日韩精品极品视频| 最近97中文超碰在线| 久久久久久九九| 日韩和欧美一区二区三区| 久久国产精品区| 一级片视频免费| 特黄特色大片免费视频大全| 蜜桃自拍偷拍| 欧美一区综合| 欧美黄色大片在线观看| 图片区小说区国产精品视频| 视频二区在线播放| 91久久高清国语自产拍| 亚洲午夜精品久久久久久人妖| 精品国产伦一区二区三区观看方式| 日韩欧美国产中文字幕| 色视频网站在线| 欧美人与性动交α欧美精品| av免费在线一区二区三区| 国产成人精品视| 日本免费一二区| 热99re久久精品这里都是免费| 五月婷婷开心中文字幕| 亚洲成人精品久久久| 黄色网址免费在线观看| 国产小视频免费| 亚洲女与黑人做爰| 免费看国产黄色片| 91老师片黄在线观看| 国产一区二区三区四区在线观看| 日韩一区二区在线观看视频播放| 中文在线观看视频| 午夜精品久久久久久久99热影院| 蜜桃在线一区二区三区精品| 精品偷拍一区二区三区在线看| 国产精品久久成人免费观看| 日韩欧美视频在线免费观看| 天堂在线www天堂中文在线| 日韩av电影网址| 五十路亲子中出在线观看| 国产小视频国产精品| 亚洲最新视频在线观看| 成人亚洲在线观看| 亚洲国产一区二区三区在线播放| 日本在线观看网站| 免费观看毛片网站| 热久久免费视频精品| 亚洲天堂网在线播放| 天堂社区日本电影超碰| 先锋资源在线视频| 国产视频一区在线观看| 日韩一级片一区二区| 国产精品香蕉视屏| 亚洲欧洲99久久| 国产美女视频免费观看下载软件| 91原色影院| 成人激情视频小说免费下载| 色琪琪一区二区三区亚洲区| 精品久久久久香蕉网| 国产毛片精品| 国产不卡视频在线观看| 天天干天天操av| 东热在线免费视频| 国产精品久久久久久| 久久精品女人| 男人揉女人奶房视频60分| 亚洲黄色高清| 中文字幕第一页在线| 成人一区二区三区四区| 欧美大片在线看| 亚洲性猛交xxxxwww| 久久精品资源| 午夜日本精品| 麻豆视频观看网址久久| 成人在线免费观看视频网站| h网站视频在线观看| 日本中文字幕电影| 国产精品一久久香蕉国产线看观看| 亚洲国产aⅴ精品一区二区| 永久免费的av网站| 欧美一区二区三区精美影视| 99国产一区二区三精品乱码| 成片免费观看| 日本韩国视频一区二区| 国产99久久| 很黄很色的网站| 国产亚洲女人久久久久毛片| 国产成人+综合亚洲+天堂| 日韩一区二区在线播放| 亚洲国产精品久久久久久6q| 日韩av片免费观看| 欧美三级网站| 国产一区二区三区在线免费| 成人性免费视频| 久久久久久久久久久久久9999| 成人a在线观看| 日韩理论片在线观看| 欧美性xxx| 天堂√在线观看一区二区| bdsm在线观看播放视频| 久久久久久久久久网| 亚洲国产精品激情在线观看| 国产一区二区丝袜高跟鞋图片| 高清av资源| 美女av电影| 亚洲欧美中日韩| 国产一级片免费在线观看| www国产精品视频| 精品中文字幕在线观看| 在线不卡欧美| 国产精品免费av一区二区| 韩国一区二区三区视频| 国精品无码人妻一区二区三区| 日本一区二区三区dvd视频在线| 99精品久久99久久久久| 精品久久久久久久| 久久机热这里只有精品| 3dmax动漫人物在线看| 久久99久久久久| 在线精品观看| 国产av无码专区亚洲精品| 羞羞的视频免费| 国产在线一二区| 久久久亚洲国产| 少妇愉情理伦三级| 色老头在线视频| 少妇精品一区二区| 国产成人精品av久久| 欧美激情图区| 一级黄色免费片| 免费黄网站在线播放| 一个人免费观看视频www在线播放| 好吊日视频在线观看| 国产xxxx振车| 91九色在线视频| 日本一区二区三区四区高清视频| 国产亚洲精品bv在线观看| 欧美超级免费视 在线| 国产日韩精品视频一区二区三区| 精品国产一级毛片| 国产亚洲女人久久久久毛片| 成人女性文胸| 亚洲狠狠婷婷综合久久久| 青青草91久久久久久久久| 日韩精品在线看片z| 99视频精品在线| yellow91字幕网在线| 五月天激情综合网| 久久国产小视频| 日韩欧美国产亚洲| 成人短视频在线| 亚洲av成人无码一二三在线观看| 蜜桃av乱码一区二区三区| 国产又猛又粗| 国产福利91精品一区二区| 懂色av蜜臀av粉嫩av永久| 亚洲国产欧美在线| 日韩大胆人体| 啊灬啊灬啊灬啊灬高潮在线看| 91n在线视频| 日本在线播放一区二区| 51视频国产精品一区二区| 国产69精品久久久久久久久久| 国产精品av久久久久久麻豆网| 特黄特色免费视频| 国产高清av| 国产成人啪免费观看软件| 日本成人在线免费| 日韩在线欧美在线国产在线| 日韩aaaa| 国产精品每日更新在线播放网址| 在线视频cao| 蜜臀久久99精品久久一区二区| 欧美激情第1页| 波多野结衣在线| 午夜免费福利视频在线观看| 在线观看视频99| 精品国产aⅴ一区二区三区东京热| 日韩久久一区二区| 亚洲免费福利一区| 久久的精品视频| 波多野结衣电影在线播放| 性做久久久久久免费观看| 成人p站proumb入口| 欧美va日韩va| 尤物网址在线观看| 国内免费精品视频| 亚洲精品在线视频播放| 国产免费高清一区| 国产精品自在欧美一区| 天天色 色综合| 精品国产电影一区| 亚洲最新免费视频| 亚洲成人网在线观看| 91精品国产色综合久久不卡蜜臀| 青青草在线免费观看| 伦一区二区三区中文字幕v亚洲| 国产美女精品写真福利视频| 久久精品亚洲7777影院| 中文字幕无码乱码人妻日韩精品| 国产精品嫩草影院精东| 成人在线分类| 国产精品久久久久久久无码| 国产情侣一区二区三区| 私人玩物在线观看| 黄色av免费在线播放| 91激情五月电影| 久久久999精品视频| 成人蜜臀av电影| 免费看a网站| 亚洲国产精品天堂| 日本a人精品| 亚洲黄色片在线观看| 免费啪视频在线观看| 99国产精品国产精品毛片| 中文av一区二区三区| 国产性70yerg老太| 91超碰这里只有精品国产| 国产日韩在线亚洲字幕中文| 亚洲精品乱码视频| 天天靠夜夜靠| 玖玖玖视频精品| 一区二区三区免费在线看| 91网站最新地址| 亚洲美女喷白浆| 国产福利不卡视频| 成人免费毛片糖心| 国产综合色在线| 亚洲视频分类| 岛国av中文字幕| 激情五月综合网| 亚洲天堂第一页| 日韩在线观看| 国产精品久久久久无码av色戒| 在线国产福利网站| 成人一区二区三区中文字幕| 日韩写真在线| 一区二区三区中文字幕| 日韩av电影手机在线观看| 国产精品私人影院| 国产特级黄色片| japanesexxxxfree在线观看| 国新精品乱码一区二区三区18| 欧美电影免费观看高清| 国产人久久人人人人爽| 欧美国产美女| 久久久久久久久影视| 国产高清在线一区二区| 欧美视频官网| 日韩在线视频线视频免费网站| 日本在线播放视频| www浪潮av99com| 青娱乐国产在线| 美国三级日本三级久久99| 日本午夜精品视频| 在线观看免费高清视频97| 国内揄拍国内精品久久| 国产亚洲成av人在线观看导航| 欧美色欧美亚洲另类七区| 国产精品v亚洲精品v日韩精品| 青青草原综合久久大伊人精品优势| 亚洲一区二区| 91视频在线免费| www.久久| 九九热最新视频| 欧洲美女少妇精品| 777午夜精品福利在线观看| 亚洲精品男人天堂| www.亚洲激情.com| av网站免费观看| 欧美日韩国产另类不卡| 91精品国产色综合久久| 国产成人夜色高潮福利影视| 我和岳m愉情xxxⅹ视频| 亚洲色图欧美偷拍| 亚洲天堂av网| seseavlu视频在线| 国产99精品视频| 奇米一区二区三区四区久久| 色网综合在线观看| 亚洲va中文在线播放免费| 97精品伊人久久久大香线蕉| 日韩精品一二三四区| 稀缺呦国内精品呦| 六月婷婷激情综合| 欧美日韩高清一区| 国产精品入口日韩视频大尺度| 国产成人久久| 亚洲av成人精品一区二区三区在线播放| 亚洲一区在线观| 91最新在线| 国产91白丝在线播放| 欧美日韩一区二区不卡| 欧美激情一区二区三区在线视频观看| 亚洲国产另类精品专区| 国产精品av久久久久久麻豆网| 日韩一区二区在线| 在线免费三级电影网站| 精品国产欧美日韩| 欧美亚洲一级| 要久久爱电视剧全集完整观看| 久久伊人精品一区二区三区| 久久人体大胆视频| 老司机在线免费视频| 91xx在线观看| 4444kk在线观看| 国产精品综合一区二区三区| www.欧美| 亚洲精品电影院| 97人人爽人人爽人人爽| 国产高清在线观看| 国产精品欧美亚洲777777| 91精品国产三级| 日本高清无吗v一区| 亚洲精品一二三区| 欧美在线观看不卡| 在线精品小视频|