国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java生成圖片驗證碼實例代碼

2019-11-26 14:26:36
字體:
來源:轉載
供稿:網友

關于java圖片驗證碼的文章最近更新了不少,幫助大家掌握java驗證碼的生成技術,下文為大家分享了java生成圖片驗證碼最簡單的方法,供大家參考。

現在各行業在定制系統時都會考慮到機器注冊,現在最有效的方式就是輸入驗證。現在的驗證方式有很多種:

一、問題驗證,其實也是圖片驗證,在圖片上生成問題,然后輸入框輸入答案。

二、圖片驗證,輸入圖片上展示的文字信息。

三、短信驗證,比較繁雜,用戶也不怎么喜歡。

四、還有就是百度最新的驗證方式。圖片上生成文字,然后出現一個文字點擊框,選擇你在驗證圖片上看到的文字。
現在就分享一下java生成驗證碼的代碼,這是一個基礎的代碼??梢灾苯釉趯W習中使用,如果需要較為復雜的驗證可自己添加邏輯驗證。

@Controllerpublic class ImgVerifyCode extends HttpServlet {   /**   *   */  private static final long serialVersionUID = 1L;   /**   * 驗證碼圖片的寬度。   */  private int width = 70;   /**   * 驗證碼圖片的高度。   */  private int height =30;   /**   * 驗證碼字符個數   */  private int codeCount = 5;   /**   * xx   */  private int xx = 0;   /**   * 字體高度   */  private int fontHeight;   /**   * codeY   */  private int codeY;   /**   * codeSequence   */   String[] codeSequence = { "1" , "2" , "3" , "4" , "5" ,"6","7","8","9","A","a","B","b","c","C"       ,"D","d","E","e","F","f","G","g","z","X","Q","v"};   /**   * 初始化驗證圖片屬性   */  public void init() throws ServletException {    // 從web.xml中獲取初始信息    // 寬度    String strWidth =width+"";    // 高度    String strHeight = height+"";    // 字符個數    String strCodeCount = codeCount+"";     // 將配置的信息轉換成數值    try {      if (strWidth != null && strWidth.length() != 0) {        width = Integer.parseInt(strWidth);      }      if (strHeight != null && strHeight.length() != 0) {        height = Integer.parseInt(strHeight);      }      if (strCodeCount != null && strCodeCount.length() != 0) {        codeCount = Integer.parseInt(strCodeCount);      }    } catch (NumberFormatException e) {      e.printStackTrace();    }     xx = width / (codeCount + 2); //生成隨機數的水平距離    fontHeight = height - 12;   //生成隨機數的數字高度    codeY = height - 8;      //生成隨機數的垂直距離   }    protected String images(HttpServletRequest req, HttpServletResponse resp)      throws ServletException,IOException {    init();    // 定義圖像buffer    BufferedImage buffImg = new BufferedImage(width, height,        BufferedImage.TYPE_INT_RGB);    Graphics2D gd = buffImg.createGraphics();     // 創建一個隨機數生成器類    Random random = new Random();     // 將圖像填充為白色    gd.setColor(Color.WHITE);    gd.fillRect(0, 0, width, height);     // 創建字體,字體的大小應該根據圖片的高度來定。    Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);    // 設置字體。    gd.setFont(font);     // 畫邊框。    gd.setColor(Color.BLACK);    gd.drawRect(0, 0, width - 1, height - 1);     // 隨機產生4條干擾線,使圖象中的認證碼不易被其它程序探測到。    gd.setColor(Color.BLACK);    for (int i = 0; i < 4; i++) {      int x = random.nextInt(width);      int y = random.nextInt(height);      int xl = random.nextInt(12);      int yl = random.nextInt(12);      gd.drawLine(x, y, x + xl, y + yl);    }     // randomCode用于保存隨機產生的驗證碼,以便用戶登錄后進行驗證。    StringBuffer randomCode = new StringBuffer();    int red = 0, green = 0, blue = 0;     // 隨機產生codeCount數字的驗證碼。    for (int i = 0; i < codeCount; i++) {      // 得到隨機產生的驗證碼數字。      String strRand = String.valueOf(codeSequence[random.nextInt(27)]);      // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。      red = random.nextInt(125);      green = random.nextInt(255);      blue = random.nextInt(200);       // 用隨機產生的顏色將驗證碼繪制到圖像中。      gd.setColor(new Color(red, green, blue));      gd.drawString(strRand, (i + 1) * xx, codeY);       // 將產生的四個隨機數組合在一起。      randomCode.append(strRand);    }    // 將四位數字的驗證碼保存到Session中。    HttpSession session = req.getSession();    session.setAttribute("validateCode", randomCode.toString());     // 禁止圖像緩存。    resp.setHeader("Pragma", "no-cache");    resp.setHeader("Cache-Control", "no-cache");    resp.setDateHeader("Expires", 0);     resp.setContentType("image/jpeg");     // 將圖像輸出到Servlet輸出流中。    ServletOutputStream sos = resp.getOutputStream();    ImageIO.write(buffImg, "jpeg", sos);    sos.close();    return null;  }  }

這個代碼就是生成驗證圖片的基礎方法。

以上就是本文的全部內容,希望對大家的學習有所幫助,大家也可以查看之前的文章進行深入學習。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑山县| 古蔺县| 奉贤区| 象州县| 当阳市| 澄江县| 乌拉特前旗| 深州市| 镇原县| 湖北省| 田阳县| 叙永县| 邵阳县| 长子县| 上林县| 三河市| 津市市| 尚义县| 太仆寺旗| 保康县| 苍梧县| 华坪县| 长岭县| 铁力市| 诸城市| 旬阳县| 陆川县| 宝兴县| 长春市| 曲沃县| 茶陵县| 那坡县| 道真| 渝中区| 紫金县| 抚松县| 通河县| 中山市| 会宁县| 民权县| 延吉市|