成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于Java實現隨機字母數字驗證碼

開發
今天給大家介紹Java實現隨機字母數字驗證碼

 [[344446]]

生成隨機驗證碼
VerifyCode 工具類

  1. package com.meeno.common.cerifycode; 
  2. import javax.imageio.ImageIO; 
  3. import java.awt.*; 
  4. import java.awt.image.BufferedImage; 
  5. import java.io.FileNotFoundException; 
  6. import java.io.FileOutputStream; 
  7. import java.io.IOException; 
  8. import java.io.OutputStream; 
  9. import java.util.Random; 
  10. /** 
  11.  * @description: 隨機驗證碼 
  12.  * @author: Wzq 
  13.  * @create: 2020-09-08 16:55 
  14.  */ 
  15. public class VerifyCode { 
  16.     private int w=70; 
  17.     private int h=35; 
  18.     private Random r= new Random(); 
  19.     private String[] fontNames={"宋體","華文楷體","黑體","微軟雅黑","楷體_GB2312"}; 
  20.     private String codes="012345678901234567890123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
  21.     private Color bgColor = new Color(255,255,255); 
  22.     private String text; 
  23.     private Color randomColor(){ 
  24.         int red = r.nextInt(150); 
  25.         int green = r.nextInt(150); 
  26.         int blue = r.nextInt(150); 
  27.         return new Color(red,green,blue); 
  28.     }    private Font randomFont(){ 
  29.         int index = this.r.nextInt(fontNames.length); 
  30.         String fontName = fontNames[index];        int style = this.r.nextInt(4); 
  31.         int size = this.r.nextInt(5) + 24; 
  32.         return new Font(fontName, style, size); 
  33.     }    private void drawLine (BufferedImage image){ 
  34.         int num = 3; 
  35.         Graphics2D g2=(Graphics2D)image.getGraphics();        for(int i=0;i<num;i++){ 
  36.             int x1=r.nextInt(w); 
  37.             int y1=r.nextInt(h); 
  38.             int x2=r.nextInt(w); 
  39.             int y2=r.nextInt(h); 
  40.             g2.setStroke(new BasicStroke(1.5F)); 
  41.             g2.setColor(Color.BLUE);            g2.drawLine(x1,y1,x2,y2);        }    }    private char randomChar(){ 
  42.         int index=r.nextInt(this.codes.length()); 
  43.         return this.codes.charAt(index); 
  44.     }    private BufferedImage createImage(){ 
  45.         BufferedImage image=new BufferedImage(this.w,this.h,BufferedImage.TYPE_INT_RGB);//BufferedImage.TYPE_INT_RGB 
  46.         Graphics2D g2 = (Graphics2D)image.getGraphics(); 
  47.         g2.setColor(this.bgColor); 
  48.         g2.fillRect(0,0,this.w,this.h); 
  49.         return image; 
  50.     } 
  51.     public BufferedImage getImage(){ 
  52.         BufferedImage image=createImage(); 
  53.         Graphics2D g2=(Graphics2D)image.getGraphics(); 
  54.         StringBuilder&nbsp;sb&amp;amp;nbsp;= new StringBuilder(); 
  55.         for(int i =0;i<4;i++){ 
  56.             String s= randomChar()+""
  57.            &nbsp;sb.append(s); 
  58.             float x= i*1.0F*this.w/4.0F; 
  59.             g2.setFont(randomFont()); 
  60.             g2.setColor(randomColor()); 
  61.             g2.drawString(s,x,this.h-5); 
  62.         } 
  63.         this.text=sb.toString(); 
  64.         drawLine(image);//添加干擾線 
  65.         return image; 
  66.     } 
  67.     //返回驗證碼上的文本 
  68.     public String getText(){ 
  69.         return this.text; 
  70.     } 
  71.     //保存圖片到指定的輸出流 
  72.     public static void output(BufferedImage image, OutputStream out
  73.             throws IOException { 
  74.         ImageIO.write(image,"JPEG",out); 
  75.     } 
  76.     public static void main(String[] args) throws IOException { 
  77.         VerifyCode vc=new VerifyCode(); 
  78.         BufferedImage bi = vc.getImage(); 
  79.         VerifyCode.output(bi,new FileOutputStream("E:\\work\\temp\\xxx.jpg")); 
  80.         System.out.println("圖片中的驗證是:"+vc.getText()); 
  81.     } 

使用

  1. /** 
  2.      * 生成隨機驗證碼     */    @RequestMapping("randomVerifyCode.do"
  3.     public ResponseBean randomVerifyCode() throws IOException {        VerifyCode vc = new VerifyCode();        BufferedImage bi = vc.getImage();        //VerifyCode.output(bi,response.getOutputStream()); 
  4.         ByteArrayOutputStream out = new ByteArrayOutputStream();        ImageIO.write(bi, "png"out); 
  5.         byte[] bytes = out.toByteArray(); 
  6.         String str = Base64.encode(bytes);        str = "data:image/png;base64," + str; 
  7.         String uuid = IdUtil.simpleUUID();        Map<String,String> resultMap = Maps.newHashMap();        resultMap.put("base64", str); 
  8.         resultMap.put("uuid", uuid); 
  9.         //save redis        String key = "RandomVerify:" + uuid; 
  10.         RedisUtil.set(key, vc.getText(), 180); 
  11.         return ResultUtil.success(resultMap); 
  12.     } 

驗證方法

  1. /** 
  2.      * 賬號登錄 
  3.      * @param session 
  4.      * @param phone 
  5.      * @param pwd 
  6.      * @param entryType 
  7.      * @return 
  8.      */ 
  9.     @RequestMapping("accountLogin.do"
  10.     public ResponseBean accountLogin(final HttpSession session, String phone, String pwd, String entryType, 
  11.                                      String uuid, String randomCerifyCode){ 
  12.         //校驗驗證碼 
  13.         MeenoAssert.hasLength(randomCerifyCode,"randomCerifyCode can not empty!"); 
  14.         Object randomCerifyCodeObj = RedisUtil.get("RandomVerify:" + uuid); 
  15.         MeenoAssert.notNull(randomCerifyCodeObj, CErrEnum.RANDOM_VERIFY_CODE_FAILURE); 
  16.         MeenoAssert.isTrue(randomCerifyCode.toLowerCase().equals(randomCerifyCodeObj.toString().toLowerCase()), CErrEnum.RANDOM_VERIFY_CODE_ERR); 
  17.         LoginResult loginResult = this.employeeService.accountLogin(session, phone, pwd, entryType); 
  18.         EmpView employeeView = this.employeeService.getEmployee(loginResult.getUserInfo().getId()); 
  19.         Map<String,Object> resultMap = Maps.newHashMap(); 
  20.         resultMap.put("loginResult", loginResult); 
  21.         resultMap.put("employee", employeeView); 
  22.         return ResultUtil.success(resultMap); 
  23.     } 

 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2025-04-01 00:44:04

2015-09-21 15:31:05

php實現驗證碼

2009-12-16 15:46:41

Ruby on rai

2013-06-19 10:19:59

2009-06-26 15:17:27

jQuery

2009-11-23 16:59:23

PHP圖形驗證碼

2009-02-09 14:17:36

2009-08-11 14:05:28

JSP驗證碼

2020-11-16 07:28:53

驗證碼

2015-03-23 17:58:04

驗證碼倒計時并行

2022-02-11 07:10:15

驗證碼

2017-12-21 07:38:19

2021-01-19 10:29:34

短信驗證碼密碼

2022-02-02 20:21:24

短信驗證碼登錄

2024-05-14 08:16:13

Spring驗證碼系統

2011-11-02 12:43:33

2015-03-17 09:28:04

2011-11-02 16:46:41

2019-06-18 07:12:25

驗證碼漏洞加密
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 综合精品久久久 | 在线观看av免费 | 亚洲人人 | 麻豆天堂 | 黄色福利| 国产精品夜间视频香蕉 | 久久精彩 | 99在线免费视频 | 亚洲一区二区三区四区av | 中文字幕av色| 国产免国产免费 | 国产精品不卡 | 国产一区二区三区在线免费观看 | 午夜在线影院 | 久久国产精品99久久久久久丝袜 | 国产精品.xx视频.xxtv | 欧美在线视频一区二区 | 久久久免费少妇高潮毛片 | 九九综合九九 | 欧美一区二区在线 | 96国产精品久久久久aⅴ四区 | 国产精品美女视频 | 三级欧美| 手机在线观看 | 日韩久久久久久久久久久 | 天天干天天草 | 91精品国产乱码麻豆白嫩 | 欧美一级小视频 | 91久色| 男女视频在线观看免费 | 国产精品九九视频 | 最新国产精品精品视频 | 日韩一区二区三区在线观看 | 北条麻妃一区二区三区在线视频 | 中文字幕第90页 | 黄页网址在线观看 | 在线观看特色大片免费网站 | 青青久在线视频 | 国产98色在线 | 日韩 | 免费欧美 | 激情网站|