1 package com.aeolia.view;
2
3 import java.awt.Color;
4 import java.awt.Font;
5 import java.awt.image.BufferedImage;
6 import java.io.IOException;
7 import javax.imageio.ImageIO;
8 import javax.servlet.ServletException;
9 import javax.servlet.http.HttpServlet;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 public class CheckCode extends HttpServlet {
14 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
15
16 //禁止浏览器缓存随即图片
17 response.setDateHeader("Expires", -1);
18 response.setHeader("Cache-Control", "no-cache");
19 response.setHeader("Pragma", "no-cahce");
20 //通知客户机以图片方式打开发送过去的数据
21 response.setHeader("Content-Type","image/jpeg");
22 //在内存中创建一幅图片
23 java.awt.image.BufferedImage image=new BufferedImage(80,30,BufferedImage.TYPE_INT_RGB);
24 //向图片上写数据
25 java.awt.Graphics g=image.getGraphics();
26 //设置背景色
27 g.setColor(Color.white);
28 //设置矩形框
29 g.fillRect(0,0,80,30);
30 //设置背景色写入数据的字体和颜色
31 g.setColor(Color.red);
32 g.setFont(new Font(null,Font.BOLD,20));
33 //向图片上写数据
34 String nums=makeNums();
35 request.getSession().setAttribute("checkcode", nums);
36 g.drawString(nums, 0,20);
37 //把写好的数据的图片输出给浏览器
38 ImageIO.write(image, "jpg", response.getOutputStream());
39 }
40 private String makeNums() {
41 java.util.Random r=new java.util.Random();
42 String nums=r.nextInt(9999)+"";
43 StringBuffer sb=new StringBuffer(nums);
44 for(int i=0;i<4-nums.length();i++){
45 sb.append("0");
46 }
47 return sb.toString();
48 }
49 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
50
51 this.doGet(request, response);
52 }
53 }