亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java動態驗證碼單線設計的兩種方法

2024-07-14 08:41:45
字體:
來源:轉載
供稿:網友

1.java的動態驗證碼我這里將介紹兩種方法:

一:根據java本身提供的一種驗證碼的寫法,這種呢只限于大家了解就可以了,因為java自帶的模式編寫的在實際開發中是沒有意義的,所以只供學習一下就可以了,待會講解的第二種呢就是我們需要掌握的一種模式了:

第一種的代碼如下:

import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class inde */@WebServlet("/inde")public class inde extends HttpServlet {  private static final long serialVersionUID = 1L;  /**   * @see HttpServlet#HttpServlet()   */  public inde() {    super();    // TODO Auto-generated constructor stub  }  /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      this.doPost(request, response);        }  /**動態生成圖片驗證碼   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    //創建圖像    int width=100;    int height=40;    //圖片的大小設置    BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);    //創建畫板        Graphics g=image.getGraphics();       setSquareBackGround(g,width,height,5);    //確定畫筆顏色    g.setColor(Color.black);    //填充矩形    g.fillRect(0, 0, width, height);      //在大矩形中放小矩形      g.setColor(Color.WHITE);      g.fillRect(1, 1, width-2, height-2);            //填充字符    String str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";    StringBuffer sb=new StringBuffer();     //畫隨機干擾框    setSquareBackGround(g,width,height,3);     //畫干擾點    CreateRandomPoint(width, height,100,g,100);        //隨機畫幾條線    CreateRandomLine(width, height,8,g,100);      //隨機獲取4個字符    Random random=new Random();    for (int i = 0; i < 4; i++) {      //62個填充字符里面隨機的隨機的收取字符      int index=random.nextInt(62);      //截取一個字符      String st=str.substring(index, index+1);      //把字符放到圖片中去      g.setColor(Color.red);      //設置字體      g.setFont(new Font("宋體",Font.BOLD,30));      g.drawString(st, 20*i, 30);//防止4個字符在一起      sb.append(st);    }    //把StringBuffer中的驗證碼放到session里面,目的是讓Login調用    HttpSession se=request.getSession();    se.setAttribute("number", sb.toString());    //發送圖片到瀏覽器 指定發送的圖片 和格式    response.setContentType("image/jpeg");    //圖片,圖片的格式,輸出的方式    ImageIO.write(image, "jpg", response.getOutputStream());  }  Random rand = new Random();  private void CreateRandomPoint(int width,int height,int many,Graphics g,int alpha)  { // 隨機產生干擾點    for (int i=0;i<many;i++) {      int x = rand.nextInt(width);       int y = rand.nextInt(height);       g.setColor(getColor(alpha));      g.drawOval(x,y,rand.nextInt(3),rand.nextInt(3));     }   }/** * 隨機產生干擾線條 * @param width * @param height * @param minMany 最少產生的數量 * @param g * @param alpha 透明度0~255 0表示全透 */  private void CreateRandomLine(int width,int height,int minMany,Graphics g,int alpha)  { // 隨機產生干擾線條    for (int i=0;i<getIntRandom(minMany, minMany+6);i++) {       int x1 =getIntRandom(0,(int)(width*0.6));       int y1 =getIntRandom(0,(int)(height*0.6));       int x2 =getIntRandom((int)(width*0.4),width);       int y2 =getIntRandom((int)(height*0.2),height);       g.setColor(getColor(alpha));      g.drawLine(x1, y1, x2, y2);    }   }  /**   * 由隨機產生的方塊來作為干擾背景   */  private void setSquareBackGround(Graphics g,int width,int height,int count){    // 隨機產生干擾線條    for (int i=0;i<getIntRandom(count, count+2);i++) {       int x1 =getIntRandom(0,(int)(width*0.3));       int y1 =getIntRandom(0,(int)(height*0.3));       int x2 =getIntRandom((int)(width*0.5),width);       int y2 =getIntRandom((int)(height*0.55),height);       g.setColor(getColor(100));      int w=x2-x1;      int h=y2-y1;      if(w<0) w=-w;      if(h<0) h=-h;      g.drawRect(x1, y1, w, h);      g.setColor(getColor(25));      g.fillRect(x1, y1, w, h);    }   }  private int getIntRandom(double start,double end)  {  if(end<start)    {     double t=end;     end=start;     start=t;    }    double i=start+(int) (Math.random()*(end-start));    return (int)i;  }

上面的代碼呢寫的很詳細了,這里我就不重復了,這里的干擾線條是有很多寫法的,我這里就沒有全寫出來,有需要的話可以私聊我哦!

下面介紹第二種:

這種呢是我們開發中是可以用得到的,使用在的是網頁端的交互,我們在登錄網站的時候有很多的驗證碼就可以用這個來寫了

import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;/** * Servlet implementation class inde */@WebServlet("/inde")public class inde extends HttpServlet {  private static final long serialVersionUID = 1L;  /**   * @see HttpServlet#HttpServlet()   */  public inde() {    super();    // TODO Auto-generated constructor stub  }  /**   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)   */  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {      this.doPost(request, response);        }  /**動態生成圖片驗證碼   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)   */  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    // TODO Auto-generated method stub    //創建圖像    int width=100;    int height=40;    //圖片的大小設置    BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);    //創建畫板        Graphics g=image.getGraphics();       setSquareBackGround(g,width,height,5);    //確定畫筆顏色    g.setColor(Color.black);    //填充矩形    g.fillRect(0, 0, width, height);      //在大矩形中放小矩形      g.setColor(Color.WHITE);      g.fillRect(1, 1, width-2, height-2);            //填充字符    String str = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";    StringBuffer sb=new StringBuffer();//隨機獲取4個字符    Random random=new Random();    for (int i = 0; i < 4; i++) {      //62個填充字符里面隨機的隨機的收取字符      int index=random.nextInt(62);      //截取一個字符      String st=str.substring(index, index+1);      //把字符放到圖片中去      g.setColor(Color.red);      //設置字體      g.setFont(new Font("宋體",Font.BOLD,30));      g.drawString(st, 20*i, 30);//防止4個字符在一起      sb.append(st);    }//把StringBuffer中的驗證碼放到session里面,目的是讓Login調用    HttpSession se=request.getSession();    se.setAttribute("number", sb.toString());    //發送圖片到瀏覽器 指定發送的圖片 和格式    response.setContentType("image/jpeg");    //圖片,圖片的格式,輸出的方式    ImageIO.write(image, "jpg", response.getOutputStream());  }

這樣就可以運行了,當然了我們可以在這里面加入第一種的干擾模塊給拿過來這樣就可以實現整體的一個效果了。

總結

以上所述是小編給大家介紹的Java動態驗證碼單線設計的兩種方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲午夜视频在线观看| 日韩欧美一区二区在线| 日本精品视频在线| 亚洲理论电影网| 日韩欧美在线视频日韩欧美在线视频| 亚洲摸下面视频| 久久精品99久久久香蕉| 青青青国产精品一区二区| 久久久精品国产一区二区| 午夜精品福利视频| 伊人成人开心激情综合网| 亚洲免费影视第一页| 久久影视电视剧凤归四时歌| 国产99久久久欧美黑人| 91精品国产91久久久| 精品亚洲夜色av98在线观看| 91禁外国网站| 午夜免费久久久久| 日韩av在线高清| 亚洲欧美国产一本综合首页| 国产一区二区在线免费| 亚洲自拍在线观看| 91精品久久久久久久久久入口| 亚洲二区在线播放视频| 日av在线播放中文不卡| 国产自产女人91一区在线观看| 久久久久国产视频| 精品国产依人香蕉在线精品| 国产一区二区在线免费视频| 国产精品福利无圣光在线一区| 亚洲激情在线观看| 欧美大片大片在线播放| 国产精品免费久久久久久| 成人午夜高潮视频| 色在人av网站天堂精品| 欧美日韩国内自拍| www国产精品视频| 国产一区二区三区视频| 国产一区视频在线播放| 国产精品视频自在线| 日韩激情第一页| 国产成+人+综合+亚洲欧洲| 狠狠躁夜夜躁人人爽超碰91| 亚洲欧美999| 久久久久久久999精品视频| 亚洲国产精品美女| 97香蕉久久超级碰碰高清版| 日韩精品在线免费| 色爱av美腿丝袜综合粉嫩av| 97精品国产91久久久久久| 日韩在线激情视频| 欧美性猛交丰臀xxxxx网站| 欧美激情国产精品| 欧美在线免费看| 国产69精品久久久久9| 欧美亚洲另类激情另类| 欧亚精品中文字幕| 最近2019中文字幕第三页视频| 亚洲成人999| 欧美大尺度电影在线观看| 国产在线观看91精品一区| 日韩中文字幕久久| 最近的2019中文字幕免费一页| 欧美综合激情网| 日韩精品在线看| 最近2019中文免费高清视频观看www99| 中文字幕亚洲色图| 欧美在线一区二区视频| 97超碰国产精品女人人人爽| 免费91麻豆精品国产自产在线观看| 日韩经典一区二区三区| 国产一区二区三区在线观看网站| 久久精品中文字幕免费mv| 97视频在线观看网址| 九九热精品视频国产| 亚洲最新中文字幕| 成人免费看黄网站| 国产精品久久久久秋霞鲁丝| 日韩中文字幕国产精品| 亚洲精品999| 国产精品手机播放| 日本精品视频网站| 45www国产精品网站| 久久精品国产亚洲精品| 亚洲字幕一区二区| 欧美午夜片欧美片在线观看| 日韩电影免费观看在线| 欧美裸体xxxx极品少妇软件| 久久国产精品久久国产精品| 欧美成人一区二区三区电影| 国产男女猛烈无遮挡91| 韩剧1988免费观看全集| 亚洲加勒比久久88色综合| 亚洲激情成人网| 亚洲精品综合久久中文字幕| 中文字幕自拍vr一区二区三区| 欧美夫妻性生活视频| 久久不射热爱视频精品| 国产精品久久久久久久久久久久久久| 欧美极品欧美精品欧美视频| 九九九久久国产免费| 欧美色欧美亚洲高清在线视频| 亚洲国产欧美一区二区丝袜黑人| 日韩经典中文字幕在线观看| 成人久久一区二区| 日韩av综合中文字幕| 欧美中文在线免费| 在线视频亚洲欧美| 久热国产精品视频| 国产精品视频网址| 色黄久久久久久| 国产精品视频一区国模私拍| 精品性高朝久久久久久久| 色综合老司机第九色激情| 久久久久久12| 日韩在线观看网站| 亚洲天堂av电影| 中文国产成人精品久久一| 国产91色在线|免| 精品国产欧美一区二区三区成人| 久久国产一区二区三区| 亚洲香蕉在线观看| 成人福利网站在线观看11| 国产一区二区三区在线观看网站| 欧美激情喷水视频| 97精品一区二区视频在线观看| 亚洲人成网站999久久久综合| 国产精品99久久99久久久二8| 日韩二区三区在线| 欧美日本高清一区| 久久久久久久久中文字幕| 亚洲一区二区中文字幕| 国产区精品视频| 欧美成人精品在线观看| 97热在线精品视频在线观看| 亚洲国产精品小视频| 国产一区二区三区视频免费| 亚洲丝袜在线视频| 日韩欧美在线视频| 久久久久99精品久久久久| 亚洲美女av电影| 欧美久久精品一级黑人c片| 欧美丝袜美女中出在线| 亚洲天堂网在线观看| 亚洲午夜久久久影院| 色综合伊人色综合网| 国产日韩欧美在线视频观看| 久久99精品国产99久久6尤物| 欧美电影免费观看大全| 国产精品福利片| 亚洲日本aⅴ片在线观看香蕉| 欧美整片在线观看| 成人情趣片在线观看免费| 粉嫩av一区二区三区免费野| xxx欧美精品| 久久在精品线影院精品国产| 在线免费观看羞羞视频一区二区| 亚洲人午夜精品免费| 色综合久综合久久综合久鬼88| 九色精品免费永久在线| 国产精品99久久久久久白浆小说| 欧美精品在线播放| 日韩精品视频在线观看网址| 国产69精品久久久|