Java笔记-java web实现验证码

160 篇文章 8 订阅
118 篇文章 4 订阅

原理其实就是用java将随机生成的数字。

画到画板上。

把这几个字符,增强,斜体啥的。

最后增加干扰线即可。

 

程序运行截图如下:

输入错误后:

输入正确就可以进行跳转了

 

关键代码如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //1. 创建画板
        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        //2. 创建画板
        Graphics2D pen = img.createGraphics();

        //3. 生成随机内容
        String code = randCode(4);
        request.getSession().setAttribute("valiCode", code);

        //4. 绘制内容
        //  4.1 设置绘制区域
        pen.fillRect(0, 0, width, height);

        //  4.2 设置字体
        pen.setFont(new Font("微软雅黑", Font.BOLD, fontsize + random.nextInt(5)));

        //  4.3 按顺序逐个绘制字符
        for(int i = 0; i < code.length(); i++){

            pen.setColor(randColor());
            pen.drawString(code.charAt(i) + "", 5 + i * fontsize, (fontsize + height) / 2 + random.nextInt(5));
        }

        //  4.4 绘制噪音线
        for(int i = 0; i < 3; i++){

            pen.setColor(randColor());
            pen.setStroke(new BasicStroke(3));
            pen.drawLine(random.nextInt(width / 2), random.nextInt(height), random.nextInt(width), random.nextInt(height));
        }

        //5.保存图片并发送
        ServletOutputStream out = response.getOutputStream();
        ImageIO.write(img, "png", out);
        out.flush();
        out.close();
    }

源码打包下载地址:

https://github.com/fengfanchen/Java/tree/master/vailSampleDemo

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值