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

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

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;
  }
  

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 寡妇快点好大好爽视频 | 偷偷狠狠的日日高清完整视频 | 色欲麻将| 欧美视频精品一区二区三区 | 成年人在线视频免费观看 | 欧美日韩国产在线人成 | 秋霞一级成人欧美理论 | 大jjjj免费看视频 | 美女禁区视频免费观看精选 | xxxxxx日本处大片免费看 | 色哟哟哟在线精品观看视频 | 日韩精品在线视频观看 | 丝袜性爱| 免费一区二区视频 | 午夜影院在线免费观看 | 国产丰满美女做爰 | 免费日韩 | 齐天大性之七仙女欲春迅雷链接 | 惊弦45集免费看 | 欧美国产日本高清不卡 | 成人综合网址 | 91久| 久见久热 这里只有精品 | 欧美一级高清片免费一级 | 亚洲+欧美+国产+综合 | 91精品国产高清久久久久 | 91porn最新地址| 999久久久免费精品国产牛牛 | 亚洲天堂2016 | 9re视频这里只有精品 | 538亚洲欧美国产日韩在线精品 | 日本免费不卡在线一区二区三区 | chinese特色video| 天天做天天爽天天谢 | 国产成人在线免费观看 | 2021麻豆剧果冻传媒入口永久 | 国产精品久久久久jk制服 | 国偷盗摄自产福利一区在线 | 97se狠狠狠狠狼亚洲综合网 | 国产精品猎奇系列在线观看 | 性欧美xxxxx老太婆 |