Java Web制作登录验证码实现代码解析

 更新时间:2020年09月25日 14:33:04   作者:勤快的懒羊羊  
这篇文章主要介绍了Java Web制作登录验证码实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

图例如下

具体操作如下:

新建一个servlet,代码如下:标记一个WebServlet,

1 @WebServlet(urlPatterns = {"/checkCode"}) //验证码Servlet

绘制验证码图片的核心代码:

int width = 100;
    int height = 50;
    //创建图片对象
    BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

    //美化图片
    Graphics g = image.getGraphics();
    //1:填充背景
    g.setColor(Color.pink);
    g.fillRect(0, 0, width, height);

    //画边框
    g.setColor(Color.blue);
    g.drawRect(0, 0, width - 1, height - 1);

    //生成一个验证码字符串
    String strCheckCode = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    Random random = new Random();
    StrCheckCode = "";
    for (int i = 1; i <= 4; i++) {
      int index = random.nextInt(strCheckCode.length());
      char ch = strCheckCode.charAt(index);
      StrCheckCode += ch;//拼接验证码
      g.drawString(ch + "", width / 5 * i, height / 2);
    }

    //画干扰线
    for (int i = 0; i < 5; i++) {
      int x1 = random.nextInt(width);
      int x2 = random.nextInt(width);

      int y1 = random.nextInt(height);
      int y2 = random.nextInt(height);
      g.drawLine(x1, x2, y1, y2);
    }

    //输出,显示出来
    ImageIO.write(image, "jpg", resp.getOutputStream());
  }

首先是new一个BufferedImage,然后给定长和宽,之后是指边框和背景色,接着使用随机数生成4个字符绘制在图片上,接着使用DrawLine绘随机制干扰线,

然后在前端页面引入图片,然后给图片绑定点击事件,点击后重新访问servlet即可:

//点击验证码图片,重新生成新验证
    $(function () {
      $("#imgCheckCode").click(function () {
        var img = document.getElementById("imgCheckCode");
        var date = new Date();
        img.src = "http://localhost:8080/blogs_war_exploded/checkCode?op=setCheckCode&a=" + date;
      })
    })
<div class="inputCheckCode">
      <div class="inputCheckCodeLeftIco">&#10148</div>
      <div class="inputCheckCodeRightInput">
        <input type="text" name="checkCode" id="checkCode" placeholder="验证码" autocomplete="off"/>
      </div>
      <img src="http://localhost:8080/blogs_war_exploded/checkCode?op=setCheckCode" id="imgCheckCode">
    </div>

最后输出即可,效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    这篇文章主要介绍了浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 一次排查@CacheEvict注解失效的经历及解决

    一次排查@CacheEvict注解失效的经历及解决

    这篇文章主要介绍了一次排查@CacheEvict注解失效的经历及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java Chassis3负载均衡选择器技术解密

    Java Chassis3负载均衡选择器技术解密

    这篇文章主要为大家介绍了Java Chassis3负载均衡选择器技术解密,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 浅谈Java中强制类型转换的问题

    浅谈Java中强制类型转换的问题

    下面小编就为大家带来一篇浅谈Java中强制类型转换的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • ElasticSearch6.2.3+head插件安装的方法步骤

    ElasticSearch6.2.3+head插件安装的方法步骤

    这篇文章主要介绍了ElasticSearch6.2.3+head插件安装的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Java使用redisson实现分布式锁的示例详解

    Java使用redisson实现分布式锁的示例详解

    这篇文章主要为大家详细介绍了在Java项目中使用redisson实现分布式锁,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-07-07
  • spring如何快速稳定解决循环依赖问题

    spring如何快速稳定解决循环依赖问题

    这篇文章主要介绍了spring如何快速稳定解决循环依赖问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java对象初始化过程代码块和构造器的调用顺序

    Java对象初始化过程代码块和构造器的调用顺序

    这篇文章主要介绍了Java对象初始化过程代码块和构造器的调用顺序,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java使用Redisson分布式锁实现原理

    Java使用Redisson分布式锁实现原理

    Redisson分布式锁 之前的基于注解的锁有一种锁是基本redis的分布式锁,这篇文章主要介绍了Java使用Redisson分布式锁实现原理,非常具有实用价值,需要的朋友可以参考下
    2018-10-10
  • SpringBoot配置文件的加载位置实例详解

    SpringBoot配置文件的加载位置实例详解

    springboot采纳了建立生产就绪spring应用程序的观点。 在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。接下来通过本文给大家介绍SpringBoot配置文件的加载位置,感兴趣的朋友一起看看吧
    2018-09-09

最新评论