欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年09月25日 14:33:04   作者:勤快的懶羊羊  
這篇文章主要介紹了Java Web制作登錄驗(yàn)證碼實(shí)現(xiàn)代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

圖例如下

具體操作如下:

新建一個(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à)干擾線
    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ī)制干擾線,

然后在前端頁(yè)面引入圖片,然后給圖片綁定點(diǎn)擊事件,點(diǎn)擊后重新訪問(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">&#10148</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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談MyBatis-Plus學(xué)習(xí)之Oracle的主鍵Sequence設(shè)置的方法

    淺談MyBatis-Plus學(xué)習(xí)之Oracle的主鍵Sequence設(shè)置的方法

    這篇文章主要介紹了淺談MyBatis-Plus學(xué)習(xí)之Oracle的主鍵Sequence設(shè)置的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 一次排查@CacheEvict注解失效的經(jīng)歷及解決

    一次排查@CacheEvict注解失效的經(jīng)歷及解決

    這篇文章主要介紹了一次排查@CacheEvict注解失效的經(jīng)歷及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java?Chassis3負(fù)載均衡選擇器技術(shù)解密

    Java?Chassis3負(fù)載均衡選擇器技術(shù)解密

    這篇文章主要為大家介紹了Java?Chassis3負(fù)載均衡選擇器技術(shù)解密,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 淺談Java中強(qiáng)制類型轉(zhuǎn)換的問(wèn)題

    淺談Java中強(qiáng)制類型轉(zhuǎn)換的問(wèn)題

    下面小編就為大家?guī)?lái)一篇淺談Java中強(qiáng)制類型轉(zhuǎn)換的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • ElasticSearch6.2.3+head插件安裝的方法步驟

    ElasticSearch6.2.3+head插件安裝的方法步驟

    這篇文章主要介紹了ElasticSearch6.2.3+head插件安裝的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Java使用redisson實(shí)現(xiàn)分布式鎖的示例詳解

    Java使用redisson實(shí)現(xiàn)分布式鎖的示例詳解

    這篇文章主要為大家詳細(xì)介紹了在Java項(xiàng)目中使用redisson實(shí)現(xiàn)分布式鎖,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2023-07-07
  • spring如何快速穩(wěn)定解決循環(huán)依賴問(wèn)題

    spring如何快速穩(wěn)定解決循環(huán)依賴問(wèn)題

    這篇文章主要介紹了spring如何快速穩(wěn)定解決循環(huán)依賴問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java對(duì)象初始化過(guò)程代碼塊和構(gòu)造器的調(diào)用順序

    Java對(duì)象初始化過(guò)程代碼塊和構(gòu)造器的調(diào)用順序

    這篇文章主要介紹了Java對(duì)象初始化過(guò)程代碼塊和構(gòu)造器的調(diào)用順序,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Java使用Redisson分布式鎖實(shí)現(xiàn)原理

    Java使用Redisson分布式鎖實(shí)現(xiàn)原理

    Redisson分布式鎖 之前的基于注解的鎖有一種鎖是基本redis的分布式鎖,這篇文章主要介紹了Java使用Redisson分布式鎖實(shí)現(xiàn)原理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • SpringBoot配置文件的加載位置實(shí)例詳解

    SpringBoot配置文件的加載位置實(shí)例詳解

    springboot采納了建立生產(chǎn)就緒spring應(yīng)用程序的觀點(diǎn)。 在一些特殊的情況下,我們需要做修改一些配置,或者需要有自己的配置屬性。接下來(lái)通過(guò)本文給大家介紹SpringBoot配置文件的加載位置,感興趣的朋友一起看看吧
    2018-09-09

最新評(píng)論