亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

JSP 制作驗證碼的實例詳解

2020-07-27 21:21:10
字體:
來源:轉載
供稿:網友

JSP 制作驗證碼的實例詳解

 驗證碼

  驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分用戶是計算機還是人的公共全自動程序??梢苑乐梗簮阂馄平饷艽a、刷票、論壇灌水,有效防止某個黑客對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試,實際上用驗證碼是現在很多網站通行的方式,我們利用比較簡易的方式實現了這個功能。這個問題可以由計算機生成并評判,但是必須只有人類才能解答。由于計算機無法解答CAPTCHA的問題,所以回答出問題的用戶就可以被認為是人類。

   Jsp制作驗證碼

  運行環境:tomcat+eclipse+jdk

  基本思想:現在Servlet上畫出驗證碼的圖片,讓其顯示到頁面上,再用js方法能刷新驗證碼,可以用ajax得到用戶輸入的值經過servlet跟驗證碼比對判斷是否,并符合提示用戶

  基本方法:  

BufferedImage: 

Image是一個抽象列,BufferedImage是Image的實現。Image和BufferedImage的主要作用就是將一副圖片加載到內存中。Java將一副圖片加載到內存中的方法是:Java代碼 String imgPath = "d:/demo.jpg"; BufferedImage image = ImageIO.read(new FileInputStream(imgPath)); 該方法可以獲得圖片的詳細信息,例如:獲得圖片的寬度:image.getWidth(null);圖片只有加載內存中才能對圖片進行進一步的處理。

Graphics: 

Graphics類提供基本的幾何圖形繪制方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等,具體操作其內容我推薦可以看看使用Java的Graphics類進行繪圖的方法詳解

  驗證碼的代碼實現

  我這里做的驗證碼是顯示中文的,可以在servlet中修改想要顯示的是數字還是字母還是結合的,可以用數組存放這些,也可以轉換ASCII碼經行隨機數字,看個人喜好

  先是做一個jsp中的驗證碼的地方

<div class="row cl">    <div>     <input type="text" placeholder="驗證碼" value="驗證碼:" onblur="testCheck(this.value);">     <img id="pic" src="CheckTestServlet"> <a id="kanbuq" onClick="Checktest();">看不清,換一張</a> </div> </div>

  在做一個Servlet叫做CheckTestServlet.java

@WebServlet("/CheckTestServlet")public class CheckTestServlet extends HttpServlet {  private static final long serialVersionUID = 1L;        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {          //這個方法實現驗證碼的生成          response.setCharacterEncoding("utf-8");          //創建圖片緩沖區設置其大小  BufferedImage(int width, int height, int imageType)          BufferedImage bImage=new BufferedImage(100, 30, BufferedImage.TYPE_3BYTE_BGR);         //在緩沖區上創建畫布         Graphics g=bImage.getGraphics();         //設置背景顏色         g.setColor(Color.orange);         //創建畫布矩形,位置(0,0)點,大小100,30         g.fillRect(0, 0, 100, 30);         //創建隨機對象         Random r=new Random();         int index;//存放隨機數         //得到的文字東西存放處         StringBuffer sBuffer=new StringBuffer();         //循環產生四個字         for (int i = 0; i < 4; i++) {           //中文字的第一個十六進制碼為4e00轉十進制是19968,最后一個是9fa0十進制為40869,所以可以產生在此之間的隨機數           index=r.nextInt(40869-19968+1)+19968;//產生隨機數字           //設置隨機顏色,           g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));           //設置文字的類型,大小           g.setFont(new Font("", Font.BOLD, 20));           /*畫字,將隨機數字轉換成十六進制Integer.toHexString(index),16)再轉換字符(char)(Integer.parseInt,           在設置每個文字的位置           */           g.drawString((char)(Integer.parseInt(Integer.toHexString(index),16))+"", i*22+4, 18);           //將其存放在StringBuffer中,以便后面讀取作比較           sBuffer.append((char)(Integer.parseInt(Integer.toHexString(index),16)));        }         //將得到的文字設置到session中         request.getSession().setAttribute("piccode", sBuffer.toString());         /*將這個驗證碼圖片讀寫到頁面中          * write(RenderedImage im, String formatName, OutputStream output)        */                  ImageIO.write(bImage, "jpg", response.getOutputStream());  }  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doGet(request, response);  }

  在做一個js刷新驗證碼的,用于看不清,或者別的刷新用處

 function Checktest(){     var time=new Date().getTime();    $("#pic").attr('src',"CheckTestServlet?d="+time)  }

  再寫一個Ajax去驗證用戶輸入的是否正確返回提示,這是用jQuery做的,需要引js

function testCheck(num){    $.ajax({      type:"post",//提交方式      url:"TestCheckServlet",//提交地址      async:true,//是否異步請求      dataType:"html",//返回類型      data:{"num":num},//傳過去的值      success:function(data,textStatus){//成功執行的方法        $("#checks").html(data)      },      error:function(){//失敗執行的方法        alert("error");      }    })  } 

  有點麻煩的再去做一個Servlet去驗證Ajax傳過來的值是否匹配驗證碼

@WebServlet("/TestCheckServlet")public class TestCheckServlet extends HttpServlet {  private static final long serialVersionUID = 1L;    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    response.setCharacterEncoding("utf-8");    PrintWriter out=response.getWriter();    //得到輸入的驗證碼與隨機的圖片驗證碼作比較,判斷是否相等,返回提示用戶,    if (request.getSession().getAttribute("piccode").toString().equals(request.getParameter("num"))) {      out.println("驗證碼正確");    }else {      out.println("驗證碼錯誤");    }  }  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    doGet(request, response);  }}

就這樣驗證碼已經基本搞定,其中還有許多需要修改的內容,花樣,根據需求而來

 以上就是二維碼的制作,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲aa在线观看| 亚洲字幕一区二区| 欧美视频一区二区三区…| 国产欧美一区二区三区视频| 国产一区二区丝袜高跟鞋图片| 国产精品视频1区| 美日韩在线视频| 热久久这里只有精品| 欧美精品做受xxx性少妇| 97超级碰碰人国产在线观看| 成人黄色av免费在线观看| 亚洲精品一区二区三区婷婷月| 韩国一区二区电影| 亚洲欧洲在线免费| 日本高清+成人网在线观看| 最近更新的2019中文字幕| 中文字幕日本欧美| 日韩资源在线观看| 国产日韩精品入口| 精品国产一区二区在线| 国产精品一区av| 精品国内亚洲在观看18黄| 69av在线播放| 久久亚洲精品中文字幕冲田杏梨| 国产精品va在线播放| 久久九九精品99国产精品| 久久免费成人精品视频| 国产精品免费福利| 97香蕉超级碰碰久久免费的优势| 中文字幕久精品免费视频| 日韩hd视频在线观看| 久久久精品久久久久| 九九热这里只有精品免费看| 国产精品日韩电影| 国产精品久久999| 欧美日韩国产激情| 欧美日韩中文字幕| 久久夜色精品亚洲噜噜国产mv| 人人澡人人澡人人看欧美| 亚洲老司机av| 中文字幕久热精品视频在线| 韩国福利视频一区| 91久久久久久| 国产日韩综合一区二区性色av| 久久久久久久成人| 亚洲人成在线播放| 久久国产一区二区三区| 人体精品一二三区| 亚洲美女喷白浆| 国产精品一区二区在线| 怡红院精品视频| 国产精品三级在线| 亚洲人成网站777色婷婷| 欧美激情一区二区三级高清视频| 狠狠做深爱婷婷久久综合一区| 91精品国产综合久久香蕉| 亚洲最新在线视频| 一个色综合导航| 亚洲精品久久久久| 超碰日本道色综合久久综合| 怡红院精品视频| 中文字幕亚洲专区| 久久精品视频免费播放| 亚洲老司机av| 精品女同一区二区三区在线播放| 亚洲人成网站999久久久综合| 国产丝袜一区二区三区免费视频| 国产精品久久久久aaaa九色| 国产色婷婷国产综合在线理论片a| 亚洲天堂av女优| 高跟丝袜欧美一区| 国产一区二区三区精品久久久| 国产成人精品av| 久久久久国产精品一区| 久久国产精品久久久| 亚洲人成电影在线播放| 欧美第一页在线| 欧美一级bbbbb性bbbb喷潮片| 国产精品草莓在线免费观看| 欧美成aaa人片在线观看蜜臀| 日韩中文字幕免费视频| 91精品视频播放| 欧美电影免费观看高清| 精品成人乱色一区二区| 免费不卡在线观看av| 欧美日韩激情小视频| 日韩精品久久久久久福利| 97色在线观看| 亚洲在线www| 欧美日韩在线另类| 亚洲欧美色图片| 日韩精品欧美国产精品忘忧草| 久久久久久亚洲精品| 91精品国产九九九久久久亚洲| 91九色在线视频| 国产精品v片在线观看不卡| 日韩日本欧美亚洲| 欧美午夜精品在线| 欧美www视频在线观看| 亚洲精品国产品国语在线| 欧美一级片在线播放| 欧美国产在线视频| 亚洲人成在线观| 庆余年2免费日韩剧观看大牛| 欧美激情视频给我| 久久免费国产视频| 欧美日韩福利视频| 久久中文字幕在线| 精品欧美国产一区二区三区| 伊人久久大香线蕉av一区二区| 欧美日韩一区二区在线| 日韩免费观看在线观看| 日本乱人伦a精品| 久久精品视频网站| 亚洲在线观看视频| 欧美亚洲国产精品| 国产一区二区三区在线免费观看| 精品久久久久久久久久ntr影视| 国产视频久久网| 亚洲男人的天堂网站| 国产亚洲福利一区| 国产免费成人av| 日韩av成人在线观看| 亚洲成人av在线| 九九久久综合网站| 国产精品久久久久久av福利软件| 久久久久国产精品免费| 国产精品亚洲欧美导航| 欧美视频在线免费看| 亚洲欧洲一区二区三区在线观看| 亚洲人av在线影院| 亚洲欧洲日产国产网站| 国产一区欧美二区三区| 日韩电影在线观看免费| 久久综合免费视频影院| 亚洲精品小视频| 国产精品主播视频| 国产精品久久国产精品99gif| 热久久99这里有精品| 久久久免费av| 91亚洲va在线va天堂va国| 欧美性猛交丰臀xxxxx网站| 日韩精品视频免费专区在线播放| 国产亚洲精品久久久| 久久精品国产精品亚洲| www.日韩不卡电影av| 久久久久久国产免费| 国产精品黄色影片导航在线观看| 91精品国产色综合久久不卡98| 国产精品久久久久久久久粉嫩av| 国产精品丝袜一区二区三区| 在线看日韩欧美| 日韩免费在线播放| 欧美性极品xxxx做受| 久久九九热免费视频| 国产精品久久久久久久一区探花| 亚洲新中文字幕| 亚洲影影院av| 91精品免费看| 不用播放器成人网| 午夜精品久久久久久久白皮肤| 亚洲福利小视频| 久久综合国产精品台湾中文娱乐网| 亚洲国产天堂网精品网站|