动态生成验证码案例(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>

启动项目

点击图片可以切换验证码

感谢

黑马程序员

万能的网络

以及勤劳的自己