Java Web制作登錄驗(yàn)證碼實(shí)現(xiàn)代碼解析
圖例如下

具體操作如下:
新建一個(gè)servlet,代碼如下:標(biāo)記一個(gè)WebServlet,
1 @WebServlet(urlPatterns = {"/checkCode"}) //驗(yàn)證碼Servlet
繪制驗(yàn)證碼圖片的核心代碼:
int width = 100;
int height = 50;
//創(chuàng)建圖片對(duì)象
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);
//畫(huà)邊框
g.setColor(Color.blue);
g.drawRect(0, 0, width - 1, height - 1);
//生成一個(gè)驗(yàn)證碼字符串
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;//拼接驗(yàn)證碼
g.drawString(ch + "", width / 5 * i, height / 2);
}
//畫(huà)干擾線(xiàn)
for (int i = 0; i < 5; i++) {
int x1 = random.nextInt(width);
int x2 = random.nextInt(width);
int y1 = random.nextInt(height);
int y2 = random.nextInt(height);
g.drawLine(x1, x2, y1, y2);
}
//輸出,顯示出來(lái)
ImageIO.write(image, "jpg", resp.getOutputStream());
}
首先是new一個(gè)BufferedImage,然后給定長(zhǎng)和寬,之后是指邊框和背景色,接著使用隨機(jī)數(shù)生成4個(gè)字符繪制在圖片上,接著使用DrawLine繪隨機(jī)制干擾線(xiàn),
然后在前端頁(yè)面引入圖片,然后給圖片綁定點(diǎn)擊事件,點(diǎn)擊后重新訪(fǎng)問(wèn)servlet即可:
//點(diǎn)擊驗(yàn)證碼圖片,重新生成新驗(yàn)證
$(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;
})
})
<div class="inputCheckCode">
<div class="inputCheckCodeLeftIco">➤</div>
<div class="inputCheckCodeRightInput">
<input type="text" name="checkCode" id="checkCode" placeholder="驗(yàn)證碼" autocomplete="off"/>
</div>
<img src="http://localhost:8080/blogs_war_exploded/checkCode?op=setCheckCode" id="imgCheckCode">
</div>
最后輸出即可,效果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 5分鐘教你使用java搞定網(wǎng)站登錄驗(yàn)證碼
- Java實(shí)現(xiàn)注冊(cè)登錄與郵箱發(fā)送賬號(hào)驗(yàn)證激活功能
- Java?自定義注解在登錄驗(yàn)證的應(yīng)用示例
- Java登錄功能實(shí)現(xiàn)token生成與驗(yàn)證
- 教你用Java驗(yàn)證服務(wù)器登錄系統(tǒng)
- JavaWeb簡(jiǎn)單用戶(hù)登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)
- Java Web實(shí)現(xiàn)登錄頁(yè)面驗(yàn)證碼驗(yàn)證功能
- java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法詳解
- java實(shí)現(xiàn)登錄驗(yàn)證碼
- Java基于Session登錄驗(yàn)證的實(shí)現(xiàn)示例
相關(guān)文章
Springboot解決no main manifest attribute錯(cuò)誤
在開(kāi)發(fā)Springboot項(xiàng)目時(shí),使用java -jar命令運(yùn)行jar包可能出現(xiàn)no main manifest attribute錯(cuò)誤,本文就來(lái)介紹一下該錯(cuò)誤的解決方法,感興趣的可以了解一下2024-09-09
Springboot實(shí)現(xiàn)郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)郵件發(fā)送功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
SpringBoot+Redis執(zhí)行l(wèi)ua腳本的方法步驟
這篇文章主要介紹了SpringBoot+Redis執(zhí)行l(wèi)ua腳本的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
使用Redis incr解決并發(fā)問(wèn)題的操作
這篇文章主要介紹了使用Redis incr解決并發(fā)問(wèn)題的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里
這篇文章主要介紹了使用logback實(shí)現(xiàn)按自己的需求打印日志到自定義的文件里,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java爬蟲(chóng)實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對(duì)象
本文主要介紹了Java爬蟲(chóng)實(shí)現(xiàn)Jsoup利用dom方法遍歷Document對(duì)象,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
SpringBoot項(xiàng)目打包war包時(shí)無(wú)法運(yùn)行問(wèn)題的解決方式
在開(kāi)發(fā)工程中,使用啟動(dòng)類(lèi)啟動(dòng)能夠正常啟動(dòng)并測(cè)試,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目打包war包時(shí)無(wú)法運(yùn)行問(wèn)題的解決方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Java讀取制表符文本轉(zhuǎn)換為JSON實(shí)現(xiàn)實(shí)例
在Java開(kāi)發(fā)中,處理各種數(shù)據(jù)格式是常見(jiàn)的任務(wù),本文將介紹如何使用Java讀取制表符文本文件,并將其轉(zhuǎn)換為JSON格式,以便于后續(xù)的數(shù)據(jù)處理和分析,我們將使用Java中的相關(guān)庫(kù)來(lái)實(shí)現(xiàn)這個(gè)過(guò)程,并提供詳細(xì)的代碼示例2024-01-01

