最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實用驗證碼的實現(xiàn)代碼

 更新時間:2016年03月23日 15:12:32   作者:小南風  
這篇文章主要為大家介紹了java實用驗證碼的實現(xiàn)代碼,驗證碼實際上就是隨機選擇一些字符以圖片的形式展現(xiàn)在頁面上,感興趣的小伙伴們可以參考一下

本文為大家分享了java實用驗證碼的實現(xiàn)代碼,供大家參考,具體內容如下

1、ValidCode     

package validImg;
 
import java.awt.Color;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.github.bingoohuang.patchca.color.ColorFactory;
import com.github.bingoohuang.patchca.custom.ConfigurableCaptchaService;
import com.github.bingoohuang.patchca.filter.predefined.CurvesRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DiffuseRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DoubleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.MarbleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.WobbleRippleFilterFactory;
import com.github.bingoohuang.patchca.utils.encoder.EncoderHelper;
import com.github.bingoohuang.patchca.word.RandomWordFactory;
 
public class ValidCode extends HttpServlet {
  private static ConfigurableCaptchaService cs = new ConfigurableCaptchaService();
  private static Random random = new Random();
  static {
//    cs.setColorFactory(new SingleColorFactory(new Color(25, 60, 170)));
  
    cs.setColorFactory(new ColorFactory() {
      @Override
      public Color getColor(int x) {
        int[] c = new int[3];
        int i = random.nextInt(c.length);
        for (int fi = 0; fi < c.length; fi++) {
          if (fi == i) {
            c[fi] = random.nextInt(71);
          } else {
            c[fi] = random.nextInt(256);
          }
        }
        return new Color(c[0], c[1], c[2]);
      }
    });
    RandomWordFactory wf = new RandomWordFactory();
    wf.setCharacters("23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ");
    wf.setMaxLength(4);
    wf.setMinLength(4);
    cs.setWordFactory(wf);
  }
 
 
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
    switch (random.nextInt(5)) {
    case 0:
      cs.setFilterFactory(new CurvesRippleFilterFactory(cs
          .getColorFactory()));
      break;
    case 1:
      cs.setFilterFactory(new MarbleRippleFilterFactory());
      break;
    case 2:
      cs.setFilterFactory(new DoubleRippleFilterFactory());
      break;
    case 3:
      cs.setFilterFactory(new WobbleRippleFilterFactory());
      break;
    case 4:
      cs.setFilterFactory(new DiffuseRippleFilterFactory());
      break;
    }
    HttpSession session = request.getSession(false);
    if (session == null) {
      session = request.getSession();
    }
    setResponseHeaders(response);
    String token = EncoderHelper.getChallangeAndWriteImage(cs, "png",
        response.getOutputStream());
    session.setAttribute("validCode", token);
    System.out.println("當前的SessionID=" + session.getId() + ",驗證碼= ," + token);
 
  }
 
  protected void setResponseHeaders(HttpServletResponse response) {
    response.setContentType("image/png");
    response.setHeader("Cache-Control", "no-cache, no-store");
    response.setHeader("Pragma", "no-cache");
    long time = System.currentTimeMillis();
    response.setDateHeader("Last-Modified", time);
    response.setDateHeader("Date", time);
    response.setDateHeader("Expires", time);
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
 
  }
 
 
}

2.XML代碼

<dependency>
  <groupId>com.github.bingoohuang</groupId>
  <artifactId>patchca</artifactId>
  <version>0.0.1</version>
 </dependency>
 
<servlet>
 <servlet-name>ValidCode</servlet-name>
 <servlet-class>validImg.ValidCode</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>ValidCode</servlet-name>
 <url-pattern>/validImg.jpg</url-pattern>
</servlet-mapping>

以上就是本文的全部內容,希望對大家的學習有所幫助。

相關文章

  • Java實現(xiàn)FTP批量大文件上傳下載篇1

    Java實現(xiàn)FTP批量大文件上傳下載篇1

    這篇文章主要為大家詳細介紹了Java實現(xiàn)FTP批量大文件上傳下載的基礎篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring?Cache?集成?Caffeine實現(xiàn)項目緩存的示例

    Spring?Cache?集成?Caffeine實現(xiàn)項目緩存的示例

    本文主要介紹了Spring?Cache?集成?Caffeine實現(xiàn)項目緩存的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 談談 Java 中 this 的使用方法

    談談 Java 中 this 的使用方法

    這篇文章主要介紹了Java 中 this 的使用方法,需要的朋友可以參考下
    2014-01-01
  • Java Hibernate使用方法及整合查詢

    Java Hibernate使用方法及整合查詢

    這篇文章主要介紹了Java使用與整合Hibernate,在正式進入Hibernate的高級應用之前,需要了解聲明是數(shù)據(jù)模型與領域模型,這兩個概念將會幫助我們更好的理解實體對象的關聯(lián)關系映射
    2023-04-04
  • Java函數(shù)式編程(八):字符串及方法引用

    Java函數(shù)式編程(八):字符串及方法引用

    這篇文章主要介紹了Java函數(shù)式編程(八):字符串及方法引用,本文是系列文章的第8篇,其它文章請參閱本文底部的相關文章,需要的朋友可以參考下
    2014-09-09
  • Java多文件生成并壓縮下載功能(思路詳解)

    Java多文件生成并壓縮下載功能(思路詳解)

    這篇文章主要介紹了Java多文件生成并壓縮下載,本文給大家分享兩種思路通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • java生成文件夾和文件的簡單示例分享

    java生成文件夾和文件的簡單示例分享

    這篇文章主要介紹了java生成文件夾和文件的簡單示例,需要的朋友可以參考下
    2014-04-04
  • java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結

    java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結

    本文主要介紹了java虛擬機參數(shù)-D、-X和-XX的區(qū)別小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • mybatis報Query?was?Empty異常的問題

    mybatis報Query?was?Empty異常的問題

    這篇文章主要介紹了mybatis報Query?was?Empty異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Springboot+AOP實現(xiàn)時間參數(shù)格式轉換

    Springboot+AOP實現(xiàn)時間參數(shù)格式轉換

    前端傳過來的時間參數(shù),后端可以自定義時間格式轉化使用,這樣想轉成什么就轉成什么。本文將利用自定義注解AOP實現(xiàn)時間參數(shù)格式轉換,感興趣的可以了解一下
    2022-04-04

最新評論

兴山县| 长子县| 涪陵区| 枝江市| 团风县| 荆门市| 扶余县| 长子县| 女性| 雷波县| 洛阳市| 安乡县| 游戏| 汉阴县| 兰西县| 中山市| 德州市| 长海县| 德格县| 特克斯县| 靖边县| 鸡西市| 获嘉县| 博客| 西林县| 灵石县| 肥东县| 章丘市| 肇庆市| 阿拉善右旗| 肇庆市| 五莲县| 大化| 澄城县| 马边| 通渭县| 清远市| 阿鲁科尔沁旗| 德昌县| 界首市| 广西|