国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java 實現隨機驗證碼功能簡單實例

Java 實現隨機驗證碼功能簡單實例

2020-09-18 14:34Java之家 JAVA教程

這篇文章主要介紹了Java 實現隨機驗證碼功能簡單實例的相關資料,需要的朋友可以參考下

Java 實現隨機驗證碼功能簡單實例

現在許多系統的注冊、登錄或者發布信息模塊都添加的隨機碼功能,就是為了避免自動注冊程序或者自動發布程序的使用。

驗證碼實際上就是隨機選擇一些字符以圖片的形式展現在頁面上,如果進行提交操作的同時需要將圖片上的字符同時提交,如果提交的字符與服務器session保存的不同,則認為提交信息無效。為了避免自動程序分析解析圖片,通常會在圖片上隨機生成一些干擾線或者將字符進行扭曲,增加自動識別的難度。

在這里,我們使用servlet來實現隨機驗證碼的實現。

 實現代碼:

 

?
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
151
152
153
154
package com.servlet;
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.Random;
 
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
/**
 * 生成隨機驗證碼
 * @author bitiliu
 *
 */
public class ValidateCodeServlet extends HttpServlet
{
 
 private static final long serialVersionUID = 1L;
 
 //驗證碼圖片的寬度。
  private int width=60;
  //驗證碼圖片的高度。
  private int height=20;
  //驗證碼字符個數
  private int codeCount=4;
  
  
  private int x=0;
  //字體高度
  private int fontHeight; 
  private int codeY;
  
  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' };
  
  /**
   * 初始化驗證圖片屬性
   */
  public void init() throws ServletException
 {
   //從web.xml中獲取初始信息
   //寬度
 String strWidth=this.getInitParameter("width");
 //高度
 String strHeight=this.getInitParameter("height");
 //字符個數
 String strCodeCount=this.getInitParameter("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)
 {}
 
 x=width/(codeCount+1);
 fontHeight=height-2;
 codeY=height-4;
 
 }
  
  protected void service(HttpServletRequest req, HttpServletResponse resp)
  throws ServletException, java.io.IOException {
   
   //定義圖像buffer
 BufferedImage buffImg = new BufferedImage(
width, height,BufferedImage.TYPE_INT_RGB);
 Graphics2D g = buffImg.createGraphics();
 
 //創建一個隨機數生成器類
 Random random = new Random();
 
 //將圖像填充為白色
 g.setColor(Color.WHITE);
 g.fillRect(0, 0, width, height);
 
 //創建字體,字體的大小應該根據圖片的高度來定。
 Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
 //設置字體。
 g.setFont(font);
 
 //畫邊框。
 g.setColor(Color.BLACK);
 g.drawRect(0, 0, width - 1, height - 1);
 
 //隨機產生160條干擾線,使圖象中的認證碼不易被其它程序探測到。
 g.setColor(Color.BLACK);
 for(int i = 0; i < 160; i++)
 {
  int x = random.nextInt(width);
  int y = random.nextInt(height);
  int xl = random.nextInt(12);
  int yl = random.nextInt(12);
  g.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(36)]);
  //產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。
  red = random.nextInt(255);
  green = random.nextInt(255);
  blue = random.nextInt(255);
 
  //用隨機產生的顏色將驗證碼繪制到圖像中。
  g.setColor(new Color(red, green, blue));
  g.drawString(strRand, (i + 1) * x, 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();
 }
 
}

需要在web.xml中聲明servlet

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<servlet>
 <servlet-name>ValidateCodeServlet</servlet-name>
 <servlet-class>com.servlet.ValidateCodeServlet</servlet-class>
 <init-param>
 <param-name>width</param-name>
 <param-value>200</param-value>
 </init-param>
 <init-param>
 <param-name>height</param-name>
 <param-value>80</param-value>
 </init-param>
 <init-param>
 <param-name>codeCount</param-name>
 <param-value>5</param-value>
 </init-param>
 </servlet>
 
 <servlet-mapping
 <servlet-name>ValidateCodeServlet</servlet-name
 <url-pattern>/validateCodeServlet</url-pattern
 </servlet-mapping>

  需要引用的頁面可以這樣來寫:

?
1
<ccid_file values="validateCodeServlet" width="100/" />

用戶提交后就可以將用戶輸入的驗證碼與session中保存的字符串進行比對,達到驗證的效果。

 感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/senton/article/details/1736078

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 一区二区三区在线看 | 天天摸天天摸 | 国产一级视频在线观看 | 久久精品一二三四 | 国产精品欧美一区二区三区 | 国产精品伦一区二区三级视频 | 精品国产乱码久久久久久影片 | 91精品国产乱码久久久久久 | 国产精彩视频 | 一级二级黄色大片 | 日韩在线永久免费播放 | 国产成人天天爽高清视频 | 人人干人人草 | 欧美在线不卡 | 精品二区| 亚洲国产精品久久 | 久久久久久国产精品免费免费狐狸 | 日韩欧美一区二区在线视频 | 亚洲欧美中文日韩在线 | 国产精品日韩高清伦字幕搜索 | 欧美一级大片免费 | 日韩一级大片 | 成人高清视频在线观看 | 人人爽人人爽人人片av | 国产剧情一区二区 | 免费看黄在线 | 午夜视频在线免费看 | 中文久久 | 亚洲精品欧美 | 91精品国产高清久久久久久久久 | 精品国产一区二区在线 | 亚洲精品久久久久久一区二区 | 综合在线视频 | 国产精品不卡一区二区三区 | 日韩中文视频 | 一级毛片免费高清 | 黄色毛片视频网站 | 久久视频一区 | 日韩亚洲视频 | 欧美日一区二区 | 亚洲精品二区 |