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

首頁 > 編程 > JSP > 正文

詳解JSP 制作驗證碼的實例

2024-09-05 00:18:51
字體:
來源:轉載
供稿:網友

說到驗證碼,大家都是很熟悉的,現在很多APP查詢都需要驗證,這也是安全保障的一部分,下面是錯新技術頻道小編為大家帶來的詳解JSP 制作驗證碼的實例,一起來看看吧!

詳解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);  }}

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

本文是錯新技術頻道小編帶給大家的詳解JSP 制作驗證碼的實例,感謝大家的閱讀,如有其他想法,也可以和小編一起探討哦。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩综合av| 欧美乱大交做爰xxxⅹ性3| 夜夜嗨av色综合久久久综合网| 日韩欧美中文在线| 国语自产精品视频在免费| 国产精品亚洲аv天堂网| 97视频免费在线观看| 亚洲精品成人久久| 一个色综合导航| 久久精品夜夜夜夜夜久久| 欧美伦理91i| 九九精品在线视频| 亚洲激情电影中文字幕| 国产精品91久久| 亚洲欧美日韩一区在线| 久久精品久久精品亚洲人| 欧美中文在线观看| 日韩在线视频二区| 欧美精品一本久久男人的天堂| 国产一区深夜福利| 777午夜精品福利在线观看| 国产精品白丝jk喷水视频一区| 久久99视频免费| 久久夜色精品国产| 日本免费久久高清视频| 日韩最新中文字幕电影免费看| 国产精品亚发布| 久久6免费高清热精品| 欧美激情第1页| 日本最新高清不卡中文字幕| 欧美性猛交xxxxx免费看| 日韩大陆欧美高清视频区| 国产精品香蕉国产| 亚洲国产精品久久精品怡红院| 51精品国产黑色丝袜高跟鞋| 97视频com| 色综合久久精品亚洲国产| 日韩电影免费在线观看中文字幕| 日本成人免费在线| 久久精品中文字幕一区| 国产成人精品免高潮在线观看| 78m国产成人精品视频| 91免费精品国偷自产在线| 久久香蕉国产线看观看网| 色偷偷综合社区| 久久伊人免费视频| 黑人欧美xxxx| 中文字幕欧美精品在线| 久久影视三级福利片| 亚洲色图美腿丝袜| 亚洲丝袜一区在线| 国产精品三级美女白浆呻吟| 91在线视频九色| 国产91在线播放| 国产精品私拍pans大尺度在线| 亚洲激情在线观看视频免费| 欧美日韩精品在线视频| 九九久久综合网站| 热99在线视频| 日产精品99久久久久久| www国产91| 欧美亚洲日本黄色| 欧美精品免费播放| 久久影院在线观看| 欧美激情第一页xxx| 亚洲成人1234| 欧美老女人xx| 国产999视频| 成人性教育视频在线观看| 久久中文字幕在线| 国产精品久久色| 日韩精品福利在线| 国产福利视频一区二区| 久久久爽爽爽美女图片| 日本亚洲欧美成人| 亚洲第一av网| 午夜剧场成人观在线视频免费观看| 欧美精品久久久久a| 国产亚洲欧洲高清| 日韩国产欧美精品一区二区三区| 国产成人久久久精品一区| 国产ts一区二区| 亚洲视频欧美视频| 在线看欧美日韩| 精品国产精品自拍| 国产亚洲美女久久| 国产精品久久9| 国产精品日本精品| 成人精品一区二区三区| 中文字幕9999| 欧美一级淫片播放口| 欧美大片在线看| 欧美大片va欧美在线播放| 国产美女精品视频免费观看| 亚洲精品国产精品乱码不99按摩| 久久久久久久一| 日本国产精品视频| 国产精品久久久久久久久久99| 九九视频这里只有精品| 91亚洲精华国产精华| 国产精品r级在线| 亚洲国产女人aaa毛片在线| 亚洲人成在线观看网站高清| 日韩电影免费观看在线观看| 国产97色在线| 国产精品美乳一区二区免费| 欧美在线精品免播放器视频| 91欧美视频网站| 欧美疯狂性受xxxxx另类| 欧美性受xxx| 视频在线观看一区二区| 操日韩av在线电影| 日本三级韩国三级久久| 久久久91精品| 亚洲a级在线观看| 91成人在线视频| 91精品国产777在线观看| 亚洲欧美日韩久久久久久| 欧美高清在线视频观看不卡| 色婷婷综合成人av| 久久精品国产欧美激情| 亚洲黄色片网站| 国产亚洲精品久久久| 久久九九国产精品怡红院| www.久久撸.com| 国产在线观看91精品一区| 国产亚洲精品久久久| 成人有码在线视频| 中文字幕在线观看亚洲| 精品一区二区电影| 疯狂做受xxxx高潮欧美日本| 久久av在线播放| 久久99青青精品免费观看| 欧美不卡视频一区发布| 少妇精69xxtheporn| 欧美久久精品一级黑人c片| 日韩av毛片网| 成人激情视频在线观看| 久久久久久久久久国产精品| 69**夜色精品国产69乱| 亚洲欧美另类自拍| 亚洲美女视频网| 久久久久久久亚洲精品| 久久久久久久久久国产精品| 日韩国产在线播放| 性夜试看影院91社区| 美乳少妇欧美精品| 亚洲综合国产精品| 青青草一区二区| 91日韩在线视频| 77777少妇光屁股久久一区| 精品人伦一区二区三区蜜桃免费| 欧美亚洲成人xxx| 国产精品日韩在线一区| 欧美激情视频给我| 成人午夜在线视频一区| 亚洲香蕉av在线一区二区三区| 欧美体内谢she精2性欧美| 亚洲天堂免费在线| 国产精品美女久久久免费| 色综合91久久精品中文字幕| 亚洲一区二区三区四区在线播放| 精品成人av一区| 亚洲精品电影在线|