zoukankan      html  css  js  c++  java
  • 动态生成验证码案例(Java)

    动态生成验证码案例(Java)

    博客说明

    文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

    servlet代码

    package cn.guizimo.web.servlet;
    
    import javax.imageio.ImageIO;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.util.Random;
    
    @WebServlet("/checkCode")
    public class CheckCode extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            int width = 100;
            int height = 50;
            //创建图片对象
            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR);
    
            //美化
            Graphics g = image.getGraphics();
            //背景
            g.setColor(Color.PINK);
            g.fillRect(0, 0, width, height);
            //边框
            g.setColor(Color.BLUE);
            g.drawRect(0, 0, width - 1, height - 1);
    
            String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
            Random ran = new Random();
            for (int i = 1; i <= 4; i++) {
                int index = ran.nextInt(str.length());
                char ch = str.charAt(index);
                g.drawString(ch+"",width/5*i,height/2);
            }
    
            //干扰线
            g.setColor(Color.GREEN);
            for (int i = 0; i < 10; i++) {
                int x1 = ran.nextInt(width);
                int x2= ran.nextInt(width);
                int y1 = ran.nextInt(height);
                int y2 = ran.nextInt(height);
                g.drawLine(x1,y1,x2,y2);
            }
    
    
       //输出图片到浏览器
            ImageIO.write(image, "jpg", resp.getOutputStream());
    
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            this.doPost(req, resp);
        }
    }
    
    

    html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script>
    
            window.onload = function () {
                var img = document.getElementById("checkCode");
                img.onclick = function () {
                    var data = new Date().getTime();
                    img.src = "/tomcat_test_war_exploded/checkCode?" + data;
                }
            }
        </script>
    </head>
    <body>
    <img id="checkCode" src="/tomcat_test_war_exploded/checkCode"/>
    </body>
    </html>
    

    启动项目

    image-20200625214010650

    点击图片可以切换验证码

    感谢

    黑马程序员

    万能的网络

    以及勤劳的自己
    关注公众号: 归子莫,获取更多的资料,还有更长的学习计划

  • 相关阅读:
    630. Course Schedule III
    20151:补足程序1
    5w5:第五周程序填空题1
    621. Task Scheduler
    452. Minimum Number of Arrows to Burst Balloons
    435. Non-overlapping Intervals
    402. Remove K Digits
    406. Queue Reconstruction by Height
    376. Wiggle Subsequence
    122. Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/guizimo/p/13193071.html
Copyright © 2011-2022 走看看