色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

Jsp servlet驗(yàn)證碼工具類分享

瀏覽:216日期:2022-06-07 15:41:35

昨晚在csdn看到一位前輩寫一個(gè)ajax+servlet+jsp驗(yàn)證,頓時(shí)心血來潮,在閱讀前輩的代碼下我親手體驗(yàn)一下,做了一個(gè)驗(yàn)證碼生成工具類,以供大家做個(gè)參考。

1、添加VeriyCodeUtils類生成驗(yàn)證碼圖像

package com.servlet;  import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.OutputStream; import java.util.Random;  import javax.imageio.ImageIO;  /**  *  * @author hubiao  *  驗(yàn)證碼生成器  * 用到API  *  BufferedImage 創(chuàng)建一個(gè)圖像  *  Graphics2D 繪制  *   fillRect(x,y,width,height);背景  *   font()字體  *   drawRect();邊框  *   drawLine();線  *   drwaString:圖像數(shù)據(jù)  *  ImageIO 生成圖像  */ public class VeriyCodeUtils {  /**   * @param output 保存驗(yàn)證圖像的流   * @return 驗(yàn)證碼   */  public static String newVeriyCode(OutputStream output)  {   int width = 90;   int height = 40;   int codeCount = 5;   char[] codeSequence = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",      "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",      "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };      //創(chuàng)建圖像對(duì)象,8位RGB   BufferedImage buffered = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);      //通過Crapahices來繪制圖像到BufferedImage中   Graphics2D gra = buffered.createGraphics();      //設(shè)置圖片背景:白色   gra.setColor(Color.WHITE);   gra.fillRect(0, 0, width, height);      //設(shè)置字體,字體大小根據(jù)圖片高度決定   gra.setFont(new Font("Fixedsys",Font.PLAIN,height-2));      //設(shè)置邊框:黑色,1cm   gra.setColor(Color.BLACK);   gra.drawRect(0, 0, width-1, height-1);      //生成10條黑色干擾線   gra.setColor(Color.BLACK);   Random ran = new Random();   for(int i = 0; i < 70;i++)   {    int x = ran.nextInt(255);    int y = ran.nextInt(255);    int x1 = ran.nextInt(255);    int y1 = ran.nextInt(255);    gra.drawLine(x, y,x+x1, y+y1);//畫直線   }   //生成驗(yàn)證碼   StringBuffer sb = new StringBuffer();   int r = 0,g = 0,b = 0;   for(int i = 0; i < codeCount; i++)   {    String strRand = String.valueOf(codeSequence[ran.nextInt(codeSequence.length)]);    //對(duì)每位驗(yàn)證碼都生成不同的顏色,增加識(shí)別系統(tǒng)難度    r = ran.nextInt(255);    g = ran.nextInt(255);    b = ran.nextInt(255);    gra.setColor(new Color(r, g, b));    gra.drawString(strRand, (i+1)*13, height-4);    sb.append(strRand);   }   try {    ImageIO.write(buffered, "jpeg", output);   } catch (Exception e) {    throw new RuntimeException(e);   }      return sb.toString();  } } 

2、servlet使用驗(yàn)證碼

protected void doPost(HttpServletRequest req, HttpServletResponse resp)    throws ServletException, IOException {   //禁止圖像緩存   resp.setHeader("Pragma", "no-cache");    resp.setHeader("Cache-Control", "no-cache");    resp.setDateHeader("Expires", 0);    resp.setContentType("image/jpeg");      //生成驗(yàn)證碼圖像   String veriyCode = VeriyCodeUtils.newVeriyCode(resp.getOutputStream());      //將驗(yàn)證碼保存到session中   HttpSession session = req.getSession();   session.setAttribute("validateCode", veriyCode);  } 

3、JSP頁面使用驗(yàn)證碼

</head>  <script type="text/javascript">   function createCode()   {    var t = new Date().getTime();//防止頁面緩存,使用時(shí)間搓    var srcImg = document.getElementById("srcImg");    srcImg.src="/ImgVeifyWeb/vity.do?"+t;   }  </script>  <body>  <h1>${requestScope.code}</h1>  <img id="srcImg" src="<c:url value="/vity.do"></c:url>" /> #這里使用直接讓img訪問servlet,通過response響應(yīng)一個(gè)圖像流  <a href="##" rel="external nofollow" id="codeId" onclick="createCode()">換一張</a>  <form action="<c:url value="/hello.do"></c:url>" method="post">   <input type="text" name="codeVify"/>   <input type="submit" value="提交"/>  </form>  </body> 

4、校驗(yàn)驗(yàn)證碼

protected void doPost(HttpServletRequest req, HttpServletResponse resp)    throws ServletException, IOException {   HttpSession session = req.getSession();   Object validateCode = session.getAttribute("validateCode");   System.out.println(validateCode);      String codeVify = req.getParameter("codeVify");   if(codeVify==null || codeVify.equals(""))   {    req.setAttribute("code","驗(yàn)證證不能為空");    req.getRequestDispatcher("/index.jsp").forward(req, resp);    return;   }else if(!validateCode.toString().equalsIgnoreCase(codeVify))   {    req.setAttribute("code","驗(yàn)證證錯(cuò)誤");    req.getRequestDispatcher("/index.jsp").forward(req, resp);    return;   }   System.out.println("下面開始 做其他業(yè)務(wù)操作....");  } 

校驗(yàn)圖如下:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

標(biāo)簽: JSP
相關(guān)文章:
主站蜘蛛池模板: 深夜福利视频在线观看免费视频 | 亚洲第一激情 | 午夜一区二区福利视频在线 | 欧美在线看欧美高清视频免费 | 国产一区二区播放 | 美国三级在线观看 | 午夜三级国产精品理论三级 | 九九在线观看视频 | 国产午夜永久福利视频在线观看 | 久久久久久久99精品免费 | 亚洲免费观看在线视频 | 国产一区二区三区久久精品小说 | 精产网红自拍在线 | 免费日本在线视频 | 波多野结衣在线视频免费观看 | 三级黄色片日韩 | 国产在线一区在线视频 | 99热碰| 成人在线免费观看视频 | 亚洲成人黄色片 | 美女毛片视频 | 欧洲成人全免费视频网站 | 久久夜色精品国产噜噜亚洲a | 很黄的网站在线观看 | 99精品国产一区二区三区 | 久草福利资源网站免费 | 亚洲精品色综合色在线观看 | 亚洲欧美一区二区三区不卡 | 精品久久一区二区 | 美女超爽久久久久网站 | 欧美一区二区视频在线观看 | 特黄毛片| 女人张开腿让男人操 | 91精品国产一区二区三区四区 | 毛茸茸年轻成熟亚洲人 | 亚洲精品人成网在线播放影院 | 久久99亚洲精品久久久久网站 | 波多野结衣视频在线观看 | 欧美精品一二三区 | 日韩亚洲欧美理论片 | 亚洲深夜福利视频 |