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

登錄時,生成隨機(jī)驗證碼圖片,如何實(shí)現(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 隨機(jī)數(shù)圖片
*/
public String getImage() {
try {
int width = 55;
int height = 25;
// 取得一個4位隨機(jī)數(shù)字字符串
String s = RandomStringUtils.randomNumeric(4);
HttpServletResponse response = WebUtils.getResponse();
// 存入cookie,用于與用戶的輸入進(jìn)行比較
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);
// 生成隨機(jī)類
Random random = new Random();
// 將認(rèn)證碼顯示到圖象中
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
// 將驗證碼畫進(jìn)圖片
g.drawString(s, 5, 20);
// 圖象生效
g.dispose();
// 輸出圖象到頁面
ImageIO.write((BufferedImage) image, "JPEG", out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 給定范圍獲得隨機(jī)顏色
* @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 () {
// 獲取圖片請求后面加一個隨機(jī)參數(shù),是為了避免同一個請求瀏覽器拒絕向服務(wù)器發(fā)送請求的問題(緩存)
$("#randomImage")[0].src = baseUrl + "/getImage.do?s=" + Math.random();
};
寫在最后
哪位大佬如若發(fā)現(xiàn)文章存在紕漏之處或需要補(bǔ)充更多內(nèi)容,歡迎留言?。?!
本文作者:Marydon
原文鏈接:https://www.cnblogs.com/Marydon20170307/p/12807842.html
以上就是Java 生成隨機(jī)驗證碼圖片的示例的詳細(xì)內(nèi)容,更多關(guān)于Java 生成驗證碼的資料請關(guān)注腳本之家其它相關(guān)文章!
- Java生成條形碼code128(親測有效)
- Java 在PDF中添加條形碼的兩種方法
- Java zxing生成條形碼和二維嗎代碼實(shí)例
- Java創(chuàng)建、識別條形碼和二維碼方法示例
- javaWeb如何實(shí)現(xiàn)隨機(jī)圖片驗證碼詳解
- java實(shí)現(xiàn)動態(tài)驗證碼
- 使用java + OpenCV破解頂象面積驗證碼的示例
- 使用java + selenium + OpenCV破解騰訊防水墻滑動驗證碼功能
- java原生動態(tài)生成驗證碼
- java生成圖片驗證碼的示例代碼
- java數(shù)字和中文算數(shù)驗證碼的實(shí)現(xiàn)
- 詳細(xì)介紹Java阿里云的短信驗證碼實(shí)現(xiàn)
- 如何使用Java redis實(shí)現(xiàn)發(fā)送手機(jī)驗證碼功能
- Java實(shí)戰(zhàn)之用Spring開發(fā)條形碼和驗證碼
相關(guān)文章
利用Java實(shí)現(xiàn)mTLS調(diào)用
這篇文章主要介紹使用 Java作為客戶端 與受 mTLS 保護(hù)的服務(wù)交互。為了對我們的 Java 客戶端進(jìn)行 ssl 配置,我們需要先設(shè)置一個 SSLContext。這簡化了事情,因為 SSLContext 可用于各種 http 客戶端,接下來我們一起進(jìn)入下面文章了解具體內(nèi)容,需要的朋友可以參考一下2021-11-11
從0到1構(gòu)建springboot web應(yīng)用鏡像并使用容器部署的過程
這篇文章主要介紹了從0到1構(gòu)建springboot web應(yīng)用鏡像并使用容器部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
springboot+Quartz實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼
本篇文章主要介紹了springboot + Quartz 實(shí)現(xiàn)任務(wù)調(diào)度的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02

