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

java Servlet 實現(xiàn)動態(tài)驗證碼圖片示例

 更新時間:2017年02月22日 16:57:32   作者:Mr_Bean  
這篇文章主要介紹了java Servlet 實現(xiàn)動態(tài)驗證碼圖片示例的資料,這里整理了詳細的代碼,有需要的小伙伴可以參考下。

整理文檔,搜刮出一個java Servlet 實現(xiàn)動態(tài)驗證碼圖片的代碼,稍微整理精簡一下做下分享。

package com.hacker;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Locale;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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;

import com.bean.Student;


public class HackerServlet extends HttpServlet {
  
  
   //驗證碼圖片的寬度。
     private int width=60;
     //驗證碼圖片的高度。
     private int height=20;
@Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   BufferedImage buffImg=new BufferedImage(width,height,
               BufferedImage.TYPE_INT_RGB);
           Graphics2D g=buffImg.createGraphics();
           
          //創(chuàng)建一個隨機數(shù)生成器類。
           Random random=new Random();
          
           g.setColor(Color.WHITE);
           g.fillRect(0,0,width,height);
          
           //創(chuàng)建字體,字體的大小應(yīng)該根據(jù)圖片的高度來定。
           Font font=new Font("Times New Roman",Font.PLAIN,18);
           //設(shè)置字體。
          g.setFont(font);
           
           //畫邊框。
           g.setColor(Color.BLACK);
           g.drawRect(0,0,width-1,height-1);
           
           //隨機產(chǎn)生160條干擾線,使圖象中的認證碼不易被其它程序探測到。
           g.setColor(Color.GRAY);
           for (int i=0;i<160;i++) {
            int x = random.nextInt(width);
             int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
             g.drawLine(x,y,x+xl,y+yl);
           }
          
           
          //randomCode用于保存隨機產(chǎn)生的驗證碼,以便用戶登錄后進行驗證。
           StringBuffer randomCode=new StringBuffer();
           int red=0,green=0,blue=0;
           
          //隨機產(chǎn)生4位數(shù)字的驗證碼。
          for (int i=0;i<4;i++) {
            //得到隨機產(chǎn)生的驗證碼數(shù)字。
            String strRand=String.valueOf(random.nextInt(10));
            
            //產(chǎn)生隨機的顏色分量來構(gòu)造顏色值,這樣輸出的每位數(shù)字的顏色值都將不同。
            red=random.nextInt(110);
            green=random.nextInt(50);
            blue=random.nextInt(50);
            
            //用隨機產(chǎn)生的顏色將驗證碼繪制到圖像中。
             g.setColor(new Color(red,green,blue));
            g.drawString(strRand,13*i+6,16);
            
             //將產(chǎn)生的四個隨機數(shù)組合在一起。
            randomCode.append(strRand);
          }
          //將四位數(shù)字的驗證碼保存到Session中。
          HttpSession session=req.getSession();
          session.setAttribute("randomCode",randomCode.toString());
          
           //禁止圖像緩存。
          resp.setHeader("Pragma","no-cache");
          resp.setHeader("Cache-Control","no-cache");
          resp.setDateHeader("Expires", 0);
          
          resp.setContentType("img/JPG");
          
           //將圖像輸出到Servlet輸出流中。
          ServletOutputStream sos=resp.getOutputStream();
          ImageIO.write(buffImg, "JPG",sos);
          sos.close();
        }
  

  }


當然這還需要改進成平常見到的驗證碼 形式,還需要努力

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot2.3.x整合Canal的示例代碼

    Springboot2.3.x整合Canal的示例代碼

    canal是阿里開源mysql?binlog?數(shù)據(jù)組件,canal-server?才是canal的核心我們前邊所講的canal的功能,實際上講述的就是canal-server的功能,本文給大家介紹Springboot2.3.x整合Canal的示例代碼,需要的朋友可以參考下
    2022-02-02
  • Spring 框架中注入或替換方法實現(xiàn)

    Spring 框架中注入或替換方法實現(xiàn)

    這篇文章主要介紹了Spring 框架中注入或替換方法實現(xiàn),非常不錯,具有參考借鑒價值,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05
  • Java版畫板的實現(xiàn)方法

    Java版畫板的實現(xiàn)方法

    這篇文章主要為大家詳細介紹了Java版畫板的實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 你真的會使用Java的方法引用嗎

    你真的會使用Java的方法引用嗎

    這篇文章主要給大家介紹了關(guān)于Java方法引用的相關(guān)資料,方法引用是Java8的新特性,方法引用其實也離不開Lambda表達式,本文通過示例代碼介紹的很詳細,需要的朋友可以參考下
    2021-08-08
  • log4j使用詳細解析

    log4j使用詳細解析

    Log4j 除了可以記錄程序運行日志信息外還有一重要的功能就是用來顯示調(diào)試信息。下面通過本文給大家介紹log4j使用詳細解析,感興趣的朋友一起看看吧
    2017-10-10
  • Action訪問Servlet的API的簡單實例

    Action訪問Servlet的API的簡單實例

    下面小編就為大家?guī)硪黄狝ction訪問Servlet的API的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java在ElasticSearch中使用LocalDatetime類型

    Java在ElasticSearch中使用LocalDatetime類型

    最近在開發(fā)一個搜索功能的需求的時候,遇到了LocalDatetime類型不能保存到ElasticSearch中的問題,這篇文章主要介紹了Java在ElasticSearch中使用LocalDatetime類型
    2023-10-10
  • Java實現(xiàn)接口的枚舉類示例

    Java實現(xiàn)接口的枚舉類示例

    這篇文章主要介紹了Java實現(xiàn)接口的枚舉類,結(jié)合實例形式分析了java接口的枚舉類相關(guān)原理與使用技巧,需要的朋友可以參考下
    2019-08-08
  • 基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密

    基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密

    這篇文章主要給大家介紹了基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密,文中有詳細的示例代碼,具有一定的參考價值,感興趣的小伙伴可以自己動手試一試
    2023-08-08
  • Java基于MySQL實現(xiàn)學生管理系統(tǒng)

    Java基于MySQL實現(xiàn)學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java基于MySQL實現(xiàn)學生管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論