热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

详解java图形验证码生成工具类web页面校验验证码的代码案例

这篇文章主要为大家详细介绍了java图形target_blankrelnofollow验证码生成工具类,web页面校验验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考

这篇文章主要为大家详细介绍了java图形http://www.gaodaima.com/code/6832.html” target=”_blank” rel=”nofollow”>验证码生成工具类,web页面校验验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善。

验证码生成器:

import javax.imageio.ImageIO;  import java.awt.*;  import java.awt.image.BufferedImage;  import java.io.FileOutputStream;  import java.io.IOException;  import java.io.OutputStream;  import java.util.Date;  import java.util.Random;    /**   * 验证码生成器   *   * @author   */  public class ValidateCode {    // 图片的宽度。    private int width = 160;    // 图片的高度。    private int height = 40;    // 验证码字符个数    private int codeCount = 5;    // 验证码干扰线数    private int lineCount = 150;    // 验证码    private String code = null;    // 验证码图片Buffer    private BufferedImage buffImg = null;      // 验证码范围,去掉0(数字)和O(拼音)容易混淆的(小写的1和L也可以去掉,大写不用了)    private char[] codeSequence = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',        'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',        'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9'};      /**     * 默认构造函数,设置默认参数     */    public ValidateCode() {      this.createCode();    }      /**     * @param width 图片宽     * @param height 图片高     */    public ValidateCode(int width, int height) {      this.width = width;      this.height = height;      this.createCode();    }      /**     * @param width   图片宽     * @param height  图片高     * @param codeCount 字符个数     * @par本文来源gaodai$ma#com搞$代*码6网am lineCount 干扰线条数     */    public ValidateCode(int width, int height, int codeCount, int lineCount) {      this.width = width;      this.height = height;      this.codeCount = codeCount;      this.lineCount = lineCount;      this.createCode();    }      public void createCode() {      int x = 0, fOntHeight= 0, codeY = 0;      int red = 0, green = 0, blue = 0;        x = width / (codeCount + 2);//每个字符的宽度(左右各空出一个字符)      fOntHeight= height - 2;//字体的高度      codeY = height - 4;        // 图像buffer      buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);      Graphics2D g = buffImg.createGraphics();      // 生成随机数      Random random = new Random();      // 将图像填充为白色      g.setColor(Color.WHITE);      g.fillRect(0, 0, width, height);      // 创建字体,可以修改为其它的      Font fOnt= new Font("Fixedsys", Font.PLAIN, fontHeight);  //    Font fOnt= new Font("Times New Roman", Font.ROMAN_BASELINE, fontHeight);      g.setFont(font);        for (int i = 0; i "+path);        vCode.write(path);      } catch (IOException e) {        e.printStackTrace();      }    }  }


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
author-avatar
mobiledu2502910157
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有