package com.gnnuit.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //生成验证码图片 public class ServletResponseDemo3 extends HttpServlet { private static final long serialVersionUID = 1L; private static int WIDTH = 120; private static int HEIGHT = 25; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置客户端不要缓存 response.setHeader("Expires", "-1"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); // 1、创建内存图片,BufferedImage BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB); // 2、通过图片获得画笔Graphics Graphics g = image.getGraphics(); // 2.1画边框 g.setColor(Color.BLUE); g.drawRect(0, 0, WIDTH, HEIGHT); // 2.2画背景颜色 g.setColor(Color.GRAY); g.fillRect(1, 1, WIDTH - 2, HEIGHT - 2); // 2.3画干扰线9条 g.setColor(Color.YELLOW); Random r = new Random(); for (int i = 0; i < 9; i++) { g.drawLine(r.nextInt(WIDTH), r.nextInt(HEIGHT), r.nextInt(WIDTH), r.nextInt(HEIGHT)); } // 2.4画验证码数字4个 g.setColor(Color.RED); g.setFont(new Font("宋体", Font.BOLD, 20)); int x = 7; for (int i = 0; i < 4; i++) { g.drawString(r.nextInt(9) + "", x, 20); x = x + 30; } // 3、输出内存图像到客户端ImageIO ImageIO.write(image, "jpeg", response.getOutputStream()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }