Java笔记-java web实现验证码

原理其实就是用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

发布了1269 篇原创文章 · 获赞 1970 · 访问量 179万+

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/104109648
今日推荐