一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java生成圖片驗證碼實例代碼

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

2020-04-17 11:54lijiao JAVA教程

這篇文章主要介紹了java生成圖片驗證碼實例代碼,驗證碼的種類有很多,問題驗證、短信驗證還有常見的圖片驗證,本文就為大家介紹生成圖片驗證碼最簡單方法,感興趣的小伙伴們可以參考一下

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

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
@Controller
public 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;
  }
  

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 手机看片1024国产 | 插得爽 | 国产香蕉国产精品偷在线观看 | 日韩一级片在线免费观看 | 大乳奶水bbw| 荷兰艾优apiyoo | 国内老司机精品视频在线播出 | 国产精品色图 | 亚洲乱码一二三四五六区 | 被18号每天强行榨干acg | 日韩精品久久不卡中文字幕 | 国产另类视频 | 亚洲精品乱码久久久久久蜜桃欧美 | 欧美国产高清 | 国产japanese孕妇孕交 | 男同精品视频免费观看网站 | 日韩在线天堂免费观看 | 精品亚洲麻豆1区2区3区 | av中文字幕网免费观看 | 日韩综合网 | 91天堂一区二区 | 青青草精品在线 | 女仆色永久免费网站 | 天美视频在线 | 日本又大又硬又粗的视频 | 艹的好爽| 欧美免赞性视频 | 色婷婷激婷婷深爱五月老司机 | 国内精品视频九九九九 | 大乳女子一级毛片 | 亚洲色图欧美偷拍 | 国产高清视频在线 | 五月香婷婷 | 好吊操这里有精品 | 边摸边吃奶又黄激烈视频韩国 | 日本丰满www色 | 国产成年人视频 | 99精品热 | 香蕉久久久久久狠狠色 | 91制片厂制作传媒破解版免费 | 亚洲国产AV无码综合在线 |