圖例如下
具體操作如下:
新建一個servlet,代碼如下:標記一個WebServlet,
1 @WebServlet(urlPatterns = {"/checkCode"}) //驗證碼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
|
int width = 100 ; int height = 50 ; //創建圖片對象 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //美化圖片 Graphics g = image.getGraphics(); // 1 :填充背景 g.setColor(Color.pink); g.fillRect( 0 , 0 , width, height); //畫邊框 g.setColor(Color. blue ); g.drawRect( 0 , 0 , width - 1 , height - 1 ); //生成一個驗證碼字符串 String strCheckCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ; Random random = new Random(); StrCheckCode = "" ; for (int i = 1 ; i <= 4 ; i++) { int index = random.nextInt(strCheckCode.length()); char ch = strCheckCode.charAt(index); StrCheckCode += ch;//拼接驗證碼 g.drawString(ch + "" , width / 5 * i, height / 2 ); } //畫干擾線 for (int i = 0 ; i < 5 ; i++) { int x 1 = random.nextInt(width); int x 2 = random.nextInt(width); int y 1 = random.nextInt(height); int y 2 = random.nextInt(height); g.drawLine(x 1 , x 2 , y 1 , y 2 ); } //輸出,顯示出來 ImageIO.write(image, "jpg" , resp.getOutputStream()); } |
首先是new一個BufferedImage,然后給定長和寬,之后是指邊框和背景色,接著使用隨機數生成4個字符繪制在圖片上,接著使用DrawLine繪隨機制干擾線,
然后在前端頁面引入圖片,然后給圖片綁定點擊事件,點擊后重新訪問servlet即可:
1
2
3
4
5
6
7
8
|
//點擊驗證碼圖片,重新生成新驗證 $( function () { $( "#imgCheckCode" ).click( function () { var img = document.getElementById( "imgCheckCode" ); var date = new Date(); img.src = "http://localhost:8080/blogs_war_exploded/checkCode?op=setCheckCode&a=" + date; }) }) |
1
2
3
4
5
6
7
|
< div class = "inputCheckCode" > < div class = "inputCheckCodeLeftIco" >➤</ div > < div class = "inputCheckCodeRightInput" > < input type = "text" name = "checkCode" id = "checkCode" placeholder = "驗證碼" autocomplete = "off" /> </ div > < img src = "http://localhost:8080/blogs_war_exploded/checkCode?op=setCheckCode" id = "imgCheckCode" > </ div > |
最后輸出即可,效果如下:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/lwl80/p/13551559.html