• 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());

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

    下一篇博客会简单介绍如何使用一些开源组件来实现验证码
     
  • 相关阅读:
    oracle中去掉文本中的换行符、回车符、制表符
    oracle中的exists和not exists和in用法详解
    将异常(getStackTrace)转化成String
    树的深度优先遍历和广度优先遍历的原理和java实现代码
    extjs4.0 treepanel节点的选中、展开! 数据的重新加载
    揭秘对象
    JVM由浅入深
    语法糖
    Java的技术体系结构
    菜鸟笔记 -- Chapter 09 常见类和接口
  • 原文地址:https://www.cnblogs.com/konrad/p/6376267.html
Copyright © 2020-2023  润新知