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

首頁 > 編程 > JSP > 正文

JSP 制作驗證碼的實例詳解

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

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
亚洲美女免费精品视频在线观看| 国产欧美精品日韩| 国产美女91呻吟求| 国产成人啪精品视频免费网| 国产精品免费网站| 久久综合五月天| 日韩av在线看| 精品免费在线视频| 亚洲精品一区久久久久久| 国产噜噜噜噜噜久久久久久久久| 成人h猎奇视频网站| 美女少妇精品视频| 国产精品日韩欧美大师| 在线精品播放av| 中文.日本.精品| 欧洲s码亚洲m码精品一区| 日韩av电影在线网| xxxxx91麻豆| 成人在线视频网| 午夜免费在线观看精品视频| 懂色aⅴ精品一区二区三区蜜月| 久久综合伊人77777尤物| 亚州国产精品久久久| 亚洲精品视频在线播放| 亚洲最大av在线| 亚洲综合中文字幕在线观看| 欧美精品一区在线播放| 欧美激情手机在线视频| 7m第一福利500精品视频| 亚洲石原莉奈一区二区在线观看| 亚洲人成电影网站色| 在线日韩av观看| 国产男女猛烈无遮挡91| 亚洲999一在线观看www| 91丝袜美腿美女视频网站| 色在人av网站天堂精品| 国产日韩在线看| 亚洲图片欧洲图片av| 夜夜躁日日躁狠狠久久88av| 亚洲精品91美女久久久久久久| 亚洲成人黄色网| 亚洲视频777| 中文字幕日韩欧美精品在线观看| 亚洲日本欧美中文幕| 一区二区成人av| 亚洲人a成www在线影院| 亚洲一区二区久久久久久久| 亚洲视频在线播放| 精品偷拍各种wc美女嘘嘘| 亚洲综合日韩在线| 久久久久久久久中文字幕| 亚洲第一免费播放区| 亚洲欧美在线免费观看| 一本色道久久综合狠狠躁篇的优点| 国产精品久久久精品| 亚洲在线www| 国产最新精品视频| 欧美裸体男粗大视频在线观看| 精品久久久中文| 亚洲理论片在线观看| 一区二区三区精品99久久| 欧美一区二区三区……| 欧美日韩亚洲系列| 欧美丰满少妇xxxxx| 久久久91精品| 成人免费直播live| 国产精品电影观看| 日韩成人av在线播放| 欧美超级免费视 在线| 亚洲视屏在线播放| 日av在线播放中文不卡| 成人国产精品一区二区| 国产一区二区在线免费视频| 亚洲精品一区中文字幕乱码| 青青草99啪国产免费| 亚洲美女在线看| 久久99精品久久久久久青青91| 中文字幕亚洲一区| 日韩成人在线电影网| 黄网动漫久久久| 蜜臀久久99精品久久久无需会员| 69视频在线播放| 岛国av一区二区在线在线观看| 亚洲欧美色婷婷| 亚洲国产成人一区| 亚洲摸下面视频| 亚洲欧美激情在线视频| 欧美日韩亚洲国产一区| 欧美区在线播放| 国产欧洲精品视频| 中文字幕精品久久| 亚洲美女视频网站| 国产大片精品免费永久看nba| 亚洲精品二三区| 久久久精品一区二区| 欧美美最猛性xxxxxx| 亚洲高清一二三区| 国产97在线|亚洲| 91精品国产九九九久久久亚洲| 91欧美精品成人综合在线观看| 欧美中文字幕视频在线观看| 亚洲春色另类小说| 久久伊人精品视频| 亚洲xxxxx电影| 成人免费网站在线观看| 国产精品久久久久久久电影| 欧美精品制服第一页| 欧美有码在线视频| 一区二区三区www| 国产精品久久久久久久久免费看| 日韩精品视频在线播放| 亚洲男人天堂2023| 欧美激情18p| 成人免费xxxxx在线观看| 91精品在线影院| 九九精品在线播放| 久久久999精品免费| 黑人巨大精品欧美一区二区| 亚洲国产精品成人精品| 精品视频久久久久久| 日韩精品免费看| 久久精品久久久久电影| 日韩电影大全免费观看2023年上| 国产亚洲福利一区| 成人性生交大片免费看视频直播| 日韩av网站电影| 伊人亚洲福利一区二区三区| 国产一区二区激情| 欧美日韩福利电影| 欧美日韩福利视频| 久久色在线播放| 国产mv免费观看入口亚洲| 久久99青青精品免费观看| 日韩精品欧美国产精品忘忧草| 久久成人这里只有精品| 在线电影欧美日韩一区二区私密| 不卡av在线网站| 亚洲欧美激情另类校园| 中文字幕在线日韩| 九九九久久国产免费| 欧美视频专区一二在线观看| 亚洲专区中文字幕| 欧美做爰性生交视频| 国产免费久久av| 日韩大片在线观看视频| 91精品国产网站| 91精品国产自产在线老师啪| 久久久av免费| 日韩电视剧免费观看网站| 97超碰国产精品女人人人爽| 中文在线资源观看视频网站免费不卡| 亚洲午夜精品视频| 国产成+人+综合+亚洲欧洲| 亚洲视频在线观看网站| 一本一道久久a久久精品逆3p| 黑人巨大精品欧美一区二区| 成人免费黄色网| 日本一区二区在线免费播放| 日韩欧美国产激情| 欧美激情综合色综合啪啪五月| 国产精品自拍网| 国产精品福利小视频| 91综合免费在线| 国产日韩欧美视频在线|