亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java 生成隨機驗證碼圖片的示例

 更新時間:2020年10月21日 11:08:38   作者:Marydon  
這篇文章主要介紹了Java 生成隨機驗證碼圖片的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下

1.情景展示

  登錄時,生成隨機驗證碼圖片,如何實現(xiàn)?    

2.原因分析

  后臺生成驗證碼并生成圖片返回至前臺 

3.解決方案

  導包

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();
        // 設定背景色
        g.setColor(getRandColor(200, 250));
        g.fillRect(0, 0, width, height);
 
        // 設置字體
        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ù),是為了避免同一個請求瀏覽器拒絕向服務器發(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)容,更多關于Java 生成驗證碼的資料請關注腳本之家其它相關文章!

相關文章

  • Spring集成Redis詳解代碼示例

    Spring集成Redis詳解代碼示例

    這篇文章主要介紹了Spring集成Redis詳解代碼示例,介紹了Eclipse工程結構,POM依賴,Spring配置,Redis配置信息以及Java代碼等相關內(nèi)容,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 利用Java實現(xiàn)mTLS調(diào)用

    利用Java實現(xiàn)mTLS調(diào)用

    這篇文章主要介紹使用 Java作為客戶端 與受 mTLS 保護的服務交互。為了對我們的 Java 客戶端進行 ssl 配置,我們需要先設置一個 SSLContext。這簡化了事情,因為 SSLContext 可用于各種 http 客戶端,接下來我們一起進入下面文章了解具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Java8新特性之默認方法和靜態(tài)方法

    Java8新特性之默認方法和靜態(tài)方法

    這篇文章主要給大家介紹了關于Java8新特性之默認方法和靜態(tài)方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Netty的心跳檢測解析

    Netty的心跳檢測解析

    這篇文章主要介紹了Netty的心跳檢測解析,客戶端的心跳檢測對于任何長連接的應用來說,都是一個非?;A的功能,要理解心跳的重要性,首先需要從網(wǎng)絡連接假死的現(xiàn)象說起,需要的朋友可以參考下
    2023-12-12
  • java實現(xiàn)秒表功能

    java實現(xiàn)秒表功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)秒表功能,利用javax.swing.Timer類設計實現(xiàn)秒表應用程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 基于Calendar獲取當前時間的性能比較

    基于Calendar獲取當前時間的性能比較

    這篇文章主要介紹了Calendar獲取當前時間的性能比較,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 從0到1構建springboot web應用鏡像并使用容器部署的過程

    從0到1構建springboot web應用鏡像并使用容器部署的過程

    這篇文章主要介紹了從0到1構建springboot web應用鏡像并使用容器部署,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Mapper類中存在名稱相同的方法重載報錯問題

    Mapper類中存在名稱相同的方法重載報錯問題

    這篇文章主要介紹了Mapper類中存在名稱相同的方法重載報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java如何手動創(chuàng)建線程池

    Java如何手動創(chuàng)建線程池

    這篇文章主要介紹了Java如何手動創(chuàng)建線程池,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • springboot+Quartz實現(xiàn)任務調(diào)度的示例代碼

    springboot+Quartz實現(xiàn)任務調(diào)度的示例代碼

    本篇文章主要介紹了springboot + Quartz 實現(xiàn)任務調(diào)度的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論