Java 生成隨機驗證碼圖片的示例
1.情景展示

登錄時,生成隨機驗證碼圖片,如何實現(xiàn)?
2.原因分析
后臺生成驗證碼并生成圖片返回至前臺
3.解決方案
導(dǎo)包
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.RandomStringUtils; import base.web.tools.WebUtils;
獲取驗證碼請求處理
/**
* 獲取驗證碼
* @explain
* @return 隨機數(shù)圖片
*/
public String getImage() {
try {
int width = 55;
int height = 25;
// 取得一個4位隨機數(shù)字字符串
String s = RandomStringUtils.randomNumeric(4);
HttpServletResponse response = WebUtils.getResponse();
// 存入cookie,用于與用戶的輸入進行比較
Cookie cookie = new Cookie("validateCode", s);
response.addCookie(cookie);
response.setContentType("images/jpeg");
response.setHeader("Cache-Control", "no-cache");
ServletOutputStream out = response.getOutputStream();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
// 設(shè)定背景色
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);
// 設(shè)置字體
Font mFont = new Font("宋體", Font.BOLD, 18);
g.setFont(mFont);
// 畫邊框
// g.setColor(Color.BLACK);
// g.drawRect(0, 0, width - 1, height - 1);
// 生成隨機類
Random random = new Random();
// 將認證碼顯示到圖象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
// 將驗證碼畫進圖片
g.drawString(s, 5, 20);
// 圖象生效
g.dispose();
// 輸出圖象到頁面
ImageIO.write((BufferedImage) image, "JPEG", out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 給定范圍獲得隨機顏色
* @explain
* @param fc
* @param bc
* @return
*/
private Color getRandColor(int fc, int bc) {
Random random = new Random();
fc = (fc > 255) ? 255 : fc;
bc = (bc > 255) ? 255 : bc;
// 獲取3次
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
html片段
<img src="<c:url value="/getImage.do"/>" id="randomImage" style="cursor: pointer;vertical-align: bottom" height="35px" width="100px" onclick='sjs()' />
js片段
function sjs () {
// 獲取圖片請求后面加一個隨機參數(shù),是為了避免同一個請求瀏覽器拒絕向服務(wù)器發(fā)送請求的問題(緩存)
$("#randomImage")[0].src = baseUrl + "/getImage.do?s=" + Math.random();
};
寫在最后
哪位大佬如若發(fā)現(xiàn)文章存在紕漏之處或需要補充更多內(nèi)容,歡迎留言?。?!
本文作者:Marydon
原文鏈接:https://www.cnblogs.com/Marydon20170307/p/12807842.html
以上就是Java 生成隨機驗證碼圖片的示例的詳細內(nèi)容,更多關(guān)于Java 生成驗證碼的資料請關(guān)注腳本之家其它相關(guān)文章!
- Java生成條形碼code128(親測有效)
- Java 在PDF中添加條形碼的兩種方法
- Java zxing生成條形碼和二維嗎代碼實例
- Java創(chuàng)建、識別條形碼和二維碼方法示例
- javaWeb如何實現(xiàn)隨機圖片驗證碼詳解
- java實現(xiàn)動態(tài)驗證碼
- 使用java + OpenCV破解頂象面積驗證碼的示例
- 使用java + selenium + OpenCV破解騰訊防水墻滑動驗證碼功能
- java原生動態(tài)生成驗證碼
- java生成圖片驗證碼的示例代碼
- java數(shù)字和中文算數(shù)驗證碼的實現(xiàn)
- 詳細介紹Java阿里云的短信驗證碼實現(xiàn)
- 如何使用Java redis實現(xiàn)發(fā)送手機驗證碼功能
- Java實戰(zhàn)之用Spring開發(fā)條形碼和驗證碼
相關(guān)文章
使用Java實現(xiàn)在Excel中創(chuàng)建下拉列表
下拉列表(下拉框)可以確保用戶僅從預(yù)先給定的選項中進行選擇,這樣不僅能減少數(shù)據(jù)輸入錯誤,還能節(jié)省時間提高效率,下面我們就來看看如何在java中利用免費庫實現(xiàn)創(chuàng)建下拉列表吧2024-03-03
Java.lang.NullPointerException的錯誤解決
Java中NullPointerException是一種常見的運行時異常,通常發(fā)生在嘗試調(diào)用null對象的方法或訪問其屬性時,具有一定的參考價值,感興趣的可以了解一下2024-09-09
RabbitMQ?延遲隊列實現(xiàn)訂單支付結(jié)果異步階梯性通知(實例代碼)
這篇文章主要介紹了RabbitMQ?延遲隊列實現(xiàn)訂單支付結(jié)果異步階梯性通知,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
springboot攔截器不攔截靜態(tài)資源,只攔截controller的實現(xiàn)方法
這篇文章主要介紹了springboot攔截器不攔截靜態(tài)資源,只攔截controller的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
windows環(huán)境下java開發(fā)工具maven的安裝教程圖解
Maven是一個項目管理和綜合工具。Maven提供了開發(fā)人員構(gòu)建一個完整的生命周期框架。這篇文章主要介紹了windows環(huán)境下java開發(fā)工具maven的安裝,非常不錯對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07

