Java生成验证码(一)

一、为什么要使用验证码
    我们要通过验证码,由用户肉眼识别其中的验证码信息,从而区分用户是人还是计算机。
  
二、什么是验证码
    验证码:是一种区分用户是计算机还是人的公共全自动程序。
    作用:可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一特定注册用户用特定程序暴力破解方式进行不断的登录尝试
    实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。
 
 
使用servlet实现验证码
    生成图片用到的类:
        1.BufferedImage图像数据缓存区
        2.Graphics绘制图片
        3.Color获取颜色
        4.Random生成随机数
        5.ImageIO输出图片
 
    生成图片的实现类:
        1.定义BufferedImage对象
1 BufferedImage bi = new BufferedImage(68,22,BufferedImage.TYPE_INT_RGB);
       
     2.获取Graphics对象
1 Graphics g = bi.getGraphics();
2 Color c = new Color(200,150,255);
3 g.setColor(c);
4 g.fillRect(0,0,68,22);
       
    3.通过Random产生随机验证码信息
    4.使用Graphics绘制图片     
 1 Char[] ch = "ABCDEFGHIJKLMNOPRSTUVWXYZ0123456789".toCharArray();
 2 Random r = new Random();
 3 int len = ch.length, index;
 4 StringBuffer sb = new StringBuffer();
 5 for(int i=0; i<4 ; i++){
 6     index = r.nextInt(len);
 7     g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
 8     g.drawString(ch[index]+"", (i*15)+3, 18);
 9     sb.append(ch[index]);
10 }
 
        5.记录验证码信息到session中
1 request.getSession().setAttribute("captcha",sb.toString());
 
        6.使用ImageIO输出图片
1 ImageIO.write(bi, "JPG",  response.getOutputStream());

-----------------------------------------------------------------------------------------------

下一篇博客会简单介绍如何使用一些开源组件来实现验证码
 
原文地址:https://www.cnblogs.com/konrad/p/6376267.html