美文网首页程序员
java实现图形验证码

java实现图形验证码

作者: OnyWang | 来源:发表于2018-02-08 18:12 被阅读232次

首先img的src可以使用远程图片,也就是说他同样是可以请求后端的,这也就是实现图形验证码随机显示的原理。

配置html页面

  • 使用img组件,src请求一个后台地址。
  • 点击图片,传递随机数,获取随机验证码。
  • 下面代码基于Thymeleaf,因此使用了th:src属性。普通的页面的话,可以直接使用src属性。
 <span class="yzm-pic">
<img th:src="@{/ran/random}" th-alt="验证码,点击图片更换" onclick="this.src='/ran/random?random='+Math.random();" />
</span>

注意:
其实,onclick是一个难点,点击之后传递一个随机数。使用this.src重新给该图片赋值。

实现后台控制方法

最终是使用ImageIO方法进行验证码的绘制。

@RequestMapping({"/ran/random"})
    public void genericRandomCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setHeader("Cache-Control", "private,no-cache,no-store");
        response.setContentType("image/png");
        byte width = 85;
        byte height = 28;
        BufferedImage image = new BufferedImage(width, height, 2);
        Graphics2D g = image.createGraphics();
        g.setComposite(AlphaComposite.getInstance(3, 1.0F));
        Random random = new Random();
        g.setColor(new Color(231, 231, 231));
        g.fillRect(0, 0, width, height);
        g.setFont(new Font("Microsoft YaHei", 2, 24));
        String sRand = "";
        for(int responseOutputStream = 0; responseOutputStream < 4; ++responseOutputStream) {
            String rand = String.valueOf(random.nextInt(10));
            sRand = sRand + rand;
            g.setColor(new Color(121, 143, 96));
            g.drawString(rand, 13 * responseOutputStream + 16, 23);
        }
        g.dispose();
        ServletOutputStream var12 = response.getOutputStream();
        ImageIO.write(image, "png", var12);
        var12.close();
    }
  • for循环里面控制了一下随机数的位数,这里为4位。

通过以上方法,实现了随机校验码。

相关文章

  • 2018-09-04

    Java生成图形验证码与前端输入验证 在刷牛客时,遇到了关于web表单登陆中图形验证码实现的问题,所以试着将其编码...

  • SpringSecurity开发基于表单的认证(五)

    实现图形验证码功能 开发生产图形验证码接口 在认证流程中加入图形验证码校验 重构代码 开发生产图形验证码接口 根据...

  • spring security 使用篇 图形验证码的实现

    在很多登录功能中,需要用到图形验证码,所以简单的实现下面的图形验证码的功能 1.获取图形验证码 图形验证码的获取实...

  • java实现图形验证码

    首先img的src可以使用远程图片,也就是说他同样是可以请求后端的,这也就是实现图形验证码随机显示的原理。 配置h...

  • java图形验证码实现

    今天来学习下图形验证码的生成,首先依赖开源组件: 在web.xml中配置名为Kaptcha的servlet: ht...

  • Spring Boot 验证码生成与验证

    下面imagecode方法是一个生成图形验证码的请求,checkcode方法实现了对这个图形验证码的验证。从验证码...

  • Django-实现图形验证码、短信验证码功能(二)

    接上文:Django-实现图形验证码、短信验证码功能(一) 短信验证码后端发送实现 在settings中添加red...

  • Java实现字符验证码、运算验证码

    Java中很轻松可以实现验证码功能,在原生AWT图形化工具包中写一点简单的逻辑就能轻松完成验证码功能。本文,同时将...

  • 前后端分离情况下的图形验证码

    图形验证码包含两部分:图片和文字验证码。在JSP时代,图形验证码生成和验证是通过Session机制来实现的:后端生...

  • beego项目实战——短信验证码

    上一篇开发完成了图形验证码,这一篇来开发短信验证码功能短信验证码主要要实现两个功能一、接收图形验证码的id,用户填...

网友评论

    本文标题:java实现图形验证码

    本文链接:https://www.haomeiwen.com/subject/vmottftx.html