欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

利用java實(shí)現(xiàn)驗(yàn)證碼生成并完成驗(yàn)證

利用java實(shí)現(xiàn)驗(yàn)證碼生成并完成驗(yàn)證?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司專注于策勒網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供策勒營(yíng)銷型網(wǎng)站建設(shè),策勒網(wǎng)站制作、策勒網(wǎng)頁設(shè)計(jì)、策勒網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造策勒網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供策勒網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

java 制作驗(yàn)證碼并進(jìn)行驗(yàn)證實(shí)例詳解

在注冊(cè)、登錄的頁面上經(jīng)常會(huì)出現(xiàn)驗(yàn)證碼,為了防止頻繁的注冊(cè)或登錄行為。下面是我用java制作的一個(gè)驗(yàn)證碼,供初學(xué)者參考,做完驗(yàn)證碼之后,我們可以用ajax進(jìn)行驗(yàn)證碼驗(yàn)證。

功能一:驗(yàn)證碼制作的代碼,點(diǎn)擊圖片,驗(yàn)證碼進(jìn)行更換

/**
 * 顯示驗(yàn)證碼圖片
 */
public void showCheckCode(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  // 調(diào)用業(yè)務(wù)邏輯
  String checkCode = getCheckCode();
  //將驗(yàn)證碼字符放入session域?qū)ο笾?
  req.getSession().setAttribute("checkCode", checkCode);

  //圖片寬
  int width = 80;
  //圖片高
  int height = 30;
  //在內(nèi)存中創(chuàng)建一個(gè)圖片
  BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
  //獲取一個(gè)畫筆
  Graphics g = image.getGraphics();
  //設(shè)置畫筆顏色,用灰色做背景
  g.setColor(Color.GRAY);
  //向Image中填充灰色
  g.fillRect(0,0,width,height);

  Random r = new Random();

  //設(shè)置3條干擾線
  for (int i = 0; i < 3; i++) {
    g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
    g.drawLine(r.nextInt(80), r.nextInt(30), r.nextInt(80), r.nextInt(80));
  }

  //設(shè)置驗(yàn)證碼字符串的顏色
  g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
  //設(shè)置字符的大小
  g.setFont(new Font("黑體",Font.BOLD,24));
  //在圖片中寫入驗(yàn)證碼字符串
  g.drawString(checkCode,15,20);
  //將Image對(duì)象以PNG格式輸出給所有的客戶端
  ImageIO.write(image,"PNG",resp.getOutputStream());
}

/**
 * 獲取4位驗(yàn)證碼中的4位隨機(jī)字符串
 */
public static String getCheckCode(){
  //驗(yàn)證碼中的字符由數(shù)字和大小寫字母組成
  String code = "0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
  Random r = new Random();
  StringBuffer sb = new StringBuffer();
  for (int i = 0; i < 4; i++) {
    sb.append(code.charAt(r.nextInt(code.length())));
  }

  return sb.toString();
}

jsp頁面

<script type="text/javascript">
  function changeCodeImage(img){
    img.src = "${pageContext.request.contextPath}/UserServlet&#63;method=showCheckCode&time="+new Date().getTime();
  }

</script>

 <div class="form-group">
  <label for="date" class="col-sm-2 control-label">驗(yàn)證碼</label>
  <div class="col-sm-3">
   <input type="text" class="form-control" id="writeCode" onkeyup="checkCodeMethod(this.value)" >

  </div>
  <div class="col-sm-2">
  <img src="${pageContext.request.contextPath}/UserServlet&#63;method=showCheckCode" id="checkCodeImage" title="點(diǎn)擊換一張" onclick="changeCodeImage(this)" />
  </div>
  <span id="checkCodeSpan"></span>
 </div>

功能二:ajax動(dòng)態(tài)驗(yàn)證驗(yàn)證碼

/**
 * 驗(yàn)證驗(yàn)證碼
 */
public void checkCode(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

  //獲取從頁面中接收到的驗(yàn)證碼參數(shù)
  String checkCode = req.getParameter("checkCode");
  //從session域?qū)ο笾蝎@取驗(yàn)證碼
  String sessionCode = (String) req.getSession().getAttribute("checkCode");
  //判斷驗(yàn)證碼是否相同
  if (checkCode.equalsIgnoreCase(sessionCode)) {
    resp.getWriter().print(true);
  }else {
    resp.getWriter().print(false);
  }

jsp頁面

<script type="text/javascript">
  function changeCodeImage(img){
    img.src = "${pageContext.request.contextPath}/UserServlet&#63;method=showCheckCode&time="+new Date().getTime();
  }

  function checkCodeMethod(code){
    $.get("${pageContext.request.contextPath}/UserServlet&#63;method=checkCode", 
        { checkCode: code}, 
        function(data){
          if (data == 'true') {
            document.getElementById("checkCodeSpan").innerHTML = "<font>驗(yàn)證碼正確!</font>";
          }else {
            document.getElementById("checkCodeSpan").innerHTML = "<font>驗(yàn)證碼錯(cuò)誤!</font>";
          }
        }
      );
  }

</script>

 <div class="form-group">
  <label for="date" class="col-sm-2 control-label">驗(yàn)證碼</label>
  <div class="col-sm-3">
   <input type="text" class="form-control" id="writeCode" onkeyup="checkCodeMethod(this.value)" >

  </div>
  <div class="col-sm-2">
  <img src="${pageContext.request.contextPath}/UserServlet&#63;method=showCheckCode" id="checkCodeImage" title="點(diǎn)擊換一張" onclick="changeCodeImage(this)" />
  </div>
  <span id="checkCodeSpan"></span>
 </div>

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

標(biāo)題名稱:利用java實(shí)現(xiàn)驗(yàn)證碼生成并完成驗(yàn)證
轉(zhuǎn)載來源:http://aaarwkj.com/article34/gipjpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)商城網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、App設(shè)計(jì)微信公眾號(hào)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
亚洲视频在线的视频在| 国产综合一区在线观看97| 亚洲人午夜射精精品日韩| 久久精品国产亚洲av波多| 国产成人一区二区三区影| 国产黄a三级三级三级老师绑| 日操夜操天天操夜夜操| 国产成人久久久精品一区| 热久久这里只有精品视频| 亚洲精品av在线网站| 日本欧美一区二区精品| 亚洲欧洲日韩综合另类| 日韩人妖视频在线观看| 亚洲精品视频久久偷拍| 国产精品又大又黑又长又粗| 国产欧美激情一区二区 | 亚洲精品永久在线观看| 国产精品成人一区二区艾草| 四虎海外永久免费地址| 91欧美在线激情视频| 精品欧美日韩国产一区| 欧美三级欧美一级视频看| 久久蜜臀av一区三区| 韩国av在线免费观看| 日韩欧美啪啪一区二区| 国产国语激情对白在线| 日本韩国三级伦理在线观看| 尤物视频最新在线观看| 欧美日韩视频一区二区| 福利av一区二区三区| 日韩av天堂免费网站| 亚乱熟女一区二区三区| 成人免费大片在线观看视频| 亚洲乱码中文字幕久久| 一区二区三区福利视频在线观看| 国产人妖cd蜜雅丝袜美女| 亚洲一区二区三区四区国产| 欧美国内日本一区二区| av中文字幕熟妇人妻少妇| 福利av一区二区三区| 欧美亚洲精品二区久久久|