java仿Servlet生成验证码实例详解

发布时间 - 2026-01-11 00:51:42    点击率:

java仿Servlet生成验证码实例详解

实现原理:使用BufferedImage对象的Graphics来进行绘制,然后输出成一张图片进行保存

实现代码及详解:

public class validateCode{

  private static Random rand = new Random();

  public static void main(String[] args){
    int val1 = rand.nextInt(9);
    int val2 = rand.nextInt(9);
    int val3 = rand.nextInt(9);
    int val4 = rand.nextInt(9);
    String val = val1 + " " + val2 + " " + val3 + " " + val4'
    BufferedImage buf = drawImage(val);
    //将最终的图片保存到D://cheng.png下
    ImageIO.write(buf,"png",new File("D://cheng.png");
  }

  public static BufferedImage drawImage(String code){
    int height = 30;
    int width = 60;
    BufferedImage buf = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics2D gs = buf.createGraphics();
    gs.setBackground(Color.black);
    gs.drawRect(0,0,width,height); 

    //绘制随机干扰线
    int total = 100;
    drawRandLine(gs,total);

    //绘制验证码
    Font font = new Font("行楷",Font.BOLD,20);
    gs.setFont(font);
    gs.setColor(getRandColor(155,255));
    gs.drawString(code,5,20);

    return buf;
  }

  public static void drawRandLine(Graphics2D gs,int total){

    for(int i=0; i<total; i++){
      int x1 = rand.nextInt(width);
      int x2 = rand.nextInt(width);
      int y1 = rand.nextInt(height);
      int y2 = rand.nextInt(height);
      //设置随机颜色
      gs.setColor(getRandColor(0,155));
      gs.drawLine(x1,y1,x2,y2);
    }  
  }

  public static Color getRandColor(int from,int to){

    int r = from + rand.nextInt(to-from);
    int g = from + rand.nextInt(to-from);
    int b = from + rand.nextInt(to-from);
    return new Color(r,g,b);  
  }

最终实现效果图

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # Servlet验证码  # Servlet验证码详解  # Servlet验证码实例代码  # Javaweb开发中通过Servlet生成验证码图片  # java web开发之servlet图形验证码功能的实现  # java Servlet 实现动态验证码图片示例  # java使用servlet实现验证码  # javaweb servlet生成简单验证码  # Servlet输出一个验证码图片的实现方法实例  # 验证码  # 希望能  # 谢谢大家  # nextInt  # int  # args  # String  # ImageIO  # png  # File  # write  # buf  # val  # cheng  # drawImage  # pre  # Graphics  # brush  # class 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  javascript基本数据类型及类型检测常用方法小结  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  iOS发送验证码倒计时应用  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Android中AutoCompleteTextView自动提示  如何在云指建站中生成FTP站点?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  如何在云主机上快速搭建网站?  Laravel如何处理CORS跨域请求?(配置示例)  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何快速搭建高效WAP手机网站吸引移动用户?  HTML 中动态设置元素 name 属性的正确语法详解  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  C#如何调用原生C++ COM对象详解  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  智能起名网站制作软件有哪些,制作logo的软件?  Laravel如何升级到最新版本?(升级指南和步骤)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  轻松掌握MySQL函数中的last_insert_id()  Laravel如何自定义错误页面(404, 500)?(代码示例)  Laravel PHP版本要求一览_Laravel各版本环境要求对照  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  非常酷的网站设计制作软件,酷培ai教育官方网站?  详解CentOS6.5 安装 MySQL5.1.71的方法  nginx修改上传文件大小限制的方法  高端智能建站公司优选:品牌定制与SEO优化一站式服务  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  JS弹性运动实现方法分析  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel怎么上传文件_Laravel图片上传及存储配置  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Android 常见的图片加载框架详细介绍  Thinkphp 中 distinct 的用法解析  实例解析angularjs的filter过滤器  如何快速重置建站主机并恢复默认配置?  PythonWeb开发入门教程_Flask快速构建Web应用  制作旅游网站html,怎样注册旅游网站?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  WEB开发之注册页面验证码倒计时代码的实现  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?