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 {
}
}