實現網站驗證碼切換功能

?實現網站驗證碼切換功能

一、樣例

?樣例1、

樣例2、

?

?

?

?

?二、實現原理

?

?

三、實現代碼

com.fry.servlet.VerifyCodeServlet

 1 package com.fry.servlet;
 2 
 3 import javax.imageio.ImageIO;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.annotation.WebServlet;
 6 import javax.servlet.http.HttpServlet;
 7 import javax.servlet.http.HttpServletRequest;
 8 import javax.servlet.http.HttpServletResponse;
 9 import java.awt.*;
10 import java.awt.image.BufferedImage;
11 import java.io.IOException;
12 import java.util.Random;
13 
14 /**
15  * Created by fry on 2017/5/31.
16  */
17 @WebServlet(name = "VerifyCodeServlet", urlPatterns = "/code")
18 public class VerifyCodeServlet extends HttpServlet {
19     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
20 
21     }
22 
23     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
24         int width = 100;
25         int height = 30;
26 
27         String data = "abcdefghijklmnopqrst01234567890";
28 
29         Random random = new Random();
30         //1、用BufferedImage生成一張圖片,最后一個參數是圖片類型
31         BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
32 
33         //3、調用image的畫圖對象
34         Graphics graphics = image.getGraphics();
35         graphics.setColor(Color.gray);
36         //左上角和右下角
37         graphics.fillRect(0, 0, width, height);
38 
39 
40         graphics.setColor(Color.black);
41         for (int i = 0; i < 4; i++) {
42             //4、隨機生成字符串,取到隨機的位置,就取到了隨機的字符串
43             int position = random.nextInt(data.length());
44             String randomStr = data.substring(position, position + 1);//分割字符串
45             graphics.drawString(randomStr, width / 5 * (i + 1), 15);//畫字符串
46 
47         }
48 
49         //2、ImageIO的write()方法可以將圖片轉化為OutputStream類型
50         /**
51          * 第二個參數是要格式化的類型
52          * 最后一個參數是將格式化的圖片寫到response的輸出流中
53          */
54         ImageIO.write(image, "jpg", response.getOutputStream());
55 
56 
57     }
58 }

?

verifyCode.html

?要讓按鈕一直能點

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 
 9 </body>
10 <center>
11     <h2>切換驗證碼</h2>
12 <!--js代碼-->
13 <script>
14     function changeImageCode() {
15         document.getElementById('btn').isDisabled=true;
16         <!-- 為了使每次的驗證碼都不一樣,防止頁面緩存,所以加上時間,ts是get方式請求傳過去的參數,每次的請求都不一樣,所以頁面沒法緩存-->
17         document.getElementById('identity').src='code?ts='+new Date().getTime();
18     }
19 </script>
20     <!--從servlet的映射是code的servlet處獲取圖片-->
21     <image  src="code"  id="identity" onload="btn.disable=false;" style="cursor:pointer; vertical-align:middle"></image>
22     <input type="button" value="看不清,更換驗證碼" onclick="changeImageCode()" id="btn"  style="vertical-align:middle">
23 
24 </center>
25 </html>

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287277.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

校園春色關不住,怎奈何唯有花枝俏,不見賞花人?

受新冠肺炎疫情的影響&#xff0c;直至今天&#xff08;2020年4月16日&#xff09;&#xff0c;各大學依然是人去樓空&#xff0c;我的大學也不例外。春天來了&#xff0c;本應是校園春色關不住&#xff0c;卻怎奈何唯有花枝俏&#xff0c;不見賞花人&#xff1f;這也正應了那句…

CSDN是如何讓我副業月入過萬的?

始 我跟 CSDN 的緣分要從 2011 年說起&#xff0c;當時我正上高二&#xff0c;當時好像是在搞鼓 MFC。當時家里有了第一臺電腦&#xff0c;我也再也不用去黑網吧去敲代碼了&#xff0c;在家搜索資料的時候出現在我眼簾之中&#xff0c;并且對我有幫助的基本上都是 CSDN 上的內…

Java Servlet API中文說明文檔

Java Servlet API中文說明文檔 目 錄 1.... Servet資料 1.1 緒言 1.2 誰需要讀這份文檔 1.3 Java Servlet API的組成 1.4 有關規范 1.5 有關Java Servlets 1.6 Java Servlet概論 1.7 Servlet的生命周期 1.8 Servlet的解析和載入 1.9 …

MSMQ消息廣播

安裝配置MSMQ消息廣播&#xff0c;并驗證是否可以發送廣播消息&#xff0c;過程實錄。1. 安裝MSMQ with broadcasting support選擇安裝“消息隊列”&#xff0c;并在子選項中選擇“多播支持”一起安裝。2. 注冊表修改MulticastBindIPIf Message Queueing found multiple IP add…

Android之解決ScrollView包裹了兩個RecyclerView導致滑動沖突問題

1 問題 ScrollView包裹了兩個RecyclerView導致滑動沖突問題 2 解決辦法 給ScrollView和兩個RecyclerView分別設置isNestedScrollingEnabled屬性為false scrollview.isNestedScrollingEnabled falsenotInstallRv.isNestedScrollingEnabled falseinstallRv.isNestedScrolling…

【操作系統】操作系統不可怕,重裝系統不求人,因為我們是GISer!

GISer不僅可以用意念操作軟件,而且可以輕松自如重裝系統!今天我們分享用U制作啟動盤,并安裝Win7系統。 一、系統安裝必備 優盤(現在的U盤內存都比較大,大于4G即可)電腦店操作系統(Win7 64位專業版)二、安裝過程 1、系統啟動盤制作 下載電腦店優盤制作軟件,安裝,運行…

php 依賴倒置原則,手擼golang 架構設計原則 依賴倒置原則

golang 架構設計原則 依賴倒置原則緣起最近復習設計模式拜讀譚勇德的<>該書以java語言演繹了常見設計模式本系列筆記擬采用golang練習之依賴倒置原則依賴倒置原則(Dependence Inversion Principle, DIP)指設計代碼結構時&#xff0c;高層模塊不應該依賴底層模塊&#xff…

看聊天記錄都學不會C語言?太菜了吧》(16)我一直以為校花很漂亮,直到我叫了她一聲...

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

小米空調來了,意外的是還一起來了一個馬桶蓋

8月10日下午&#xff0c;小米旗下生態鏈企業智米召開了新品發布會&#xff0c;發布會上正式推出了智米全直流變頻空調和智米智能馬桶蓋。 智米全直流變頻空調采用了純白配色&#xff0c;外觀設計較為簡潔&#xff0c;空調底部有一個圓形的顯示屏&#xff0c;可顯示溫度、電量統…

聊一聊 CLR 中的 typedef 是怎么玩的

一&#xff1a;背景 在 CLR 源碼中&#xff0c;我們會看到很多關于 typedef 的定義&#xff0c;比如下面這樣&#xff1a;// Callback function type used by DacStreamManager to coordinate // amount of available memory between multiple streamable data // structures (…

JAVA如何正確處理Unicode字符

最近在開發輸入法程序時遇到一個小問題&#xff0c;就是刪除一個emoji時&#xff0c;不能一次刪干凈&#xff0c;需要執行兩次操作才可以。Intuitively&#xff0c;這肯定是java操作unicode字符的問題&#xff0c;于是找了JAVA官方文檔參考一下&#xff0c;解決了這個問題&…

透過面試題,洞察Hbase 核心知識點

LSM 算法 HFile 索引 &#xff0c;二級索引 hbase的問題 1.hbase怎么預分區&#xff1f; 2.hbase怎么給web前臺提供接口來訪問&#xff1f; 3.htable API有沒有線程安全問題&#xff0c;在程序中是單例還是多例&#xff1f; 4.我們的hbase大概在公司業務中&#xff08;主要…

Android之解決android9.0通過Inten方式卸載APP沒反應

1 問題 通過Intent卸載APP在安卓9.0手機上沒反應&#xff0c;也沒報錯&#xff0c;卸載相關APP跳轉到卸載頁面代碼 fun unInstallApp(packageName: String) {val uri: Uri Uri.fromParts("package", packageName, null)val intent Intent(Intent.ACTION_DELETE, u…

《看聊天記錄都學不會Python到游戲實戰?太菜了吧》(4)小白不知道這個知識點將會錯漏百出

本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋了新手在學習中的一般問題。此系列將會持續更新&#xff0c;包括別的語言以及實戰都將使用對話的方式進行教學&#xff0c;基礎編程語言教學適用于零基礎小白&#xff0c;之后實戰課程也將會逐步更新。 若…

【Pix4d精品教程】打開Pix4DMapper時提示Pix4DMapper.exe已停止工作的完全解決辦法

本文為作者在使用軟件時,打開Pix4DMapper時提示Pix4DMapper.exe已停止工作的完全解決辦法,親測可用! 目錄 一、問題錯誤提示 二、問題分析及解決方法 一、問題錯誤提示 打開Pix4DMapper時,提示Pix4DMapper.exe已停止工作,錯誤提示如下: 展開問題詳細信息:

oracle 導庫時日志滿了,oracle rac 11g 日志占滿系統盤導致數據庫down掉

oracle日志占滿系統盤滿了導致數據庫掛掉 并且archivelog日志也滿了倒是數據庫無法open&#xff0c;無法登陸&#xff0c;幸好還可以到mount狀態。解決辦法&#xff1a;1.根據報錯查看 表象&#xff1a; crs 服務down掉CRS-0184: Cannot communicate with the CRS daemon刪除/v…

Framework Design Studio 發布了

介紹 Krzysztof Cwalina 和他的伙計們最近在開發一個工具&#xff0c;可以幫助框架設計者更容易地進行設計、復查和維護高度易用的API&#xff0c;你可一定要看看Framework Design Studio&#xff08;FDS&#xff09;。 可以在此處下載FDS和它的快速入門文檔。 目前這個工具主要…

微服務 配置中心 Nacos .Net 5

本文來自投稿&#xff1a;藍創精英團隊基于Nacos來一篇關于微服務的配置中心方案Demo。Nacos是開源的&#xff0c;同時&#xff0c;阿里云也有收費的關于它的服務&#xff0c;公司剛好是依托阿里云的服務體系&#xff0c;所以&#xff0c;使用它作為配置中心的可能性還是很大的…

【Pix4d精品教程】安裝Pix4Dmapper時提示“無法啟動此程序,因為計算機中丟失api-ms-win-crt-runtime-l1-1-0.dll”完全解決辦法

Pix4Dmapper系列文章合集: 打開Pix4DMapper時提示Pix4DMapper.exe已停止工作的完全解決辦法 Pix4DMapper圖文安裝教程(附安裝包下載) Pix4Dmapper完整航測內業操作流程手把手圖文教程 目 錄 一、問題描述 二、問題分析 三、解決辦法

看聊天記錄都學不會C語言?太菜了吧》(17)5分鐘搞懂指針與多重指針

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…