动态生成验证码案例(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>
启动项目
点击图片可以切换验证码
感谢
黑马程序员万能的网络
以及勤劳的自己