package com.turing.project.yxyd.action;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 public class Sheng extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;//  private int width=60;
//  private int height=20;
   private int width=120;
   private int height=40;
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
BufferedImage buffImg=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D g=buffImg.createGraphics();
//创建随机数序列
Random random=new Random();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
//创建字体大小应该根据图片大小来定
Font font=new Font("Times New Roman",Font.PLAIN,18);
// Font font=new Font("Times New Roman",Font.PLAIN,28);
g.setFont(font);
//画边框
g.setColor(Color.BLACK);
g.drawRect(0,0,width-1,height-1);
//随机产生160条干扰线
g.setColor(Color.GRAY);
for(int i=0;i<160;i++)
{
int x=random.nextInt(width);
int y=random.nextInt(height);
int x1=random.nextInt(12);
int y1=random.nextInt(12);
g.drawLine(x, y, x+x1, y+y1);
}
//randomCode保存随机的验证码
StringBuffer randomCode=new StringBuffer();
int red=0,green=0,blue=0;
for( int i=0;i<4;i++)
{
String strRand=String.valueOf(random.nextInt(10));
red=random.nextInt(110);
green=random.nextInt(50);
blue=random.nextInt(50);
g.setColor(new Color(red,green,blue));
g.drawString(strRand, 13*i+6, 16);
//将4个随机数连成字符串
randomCode.append(strRand);
}
/////最关键的一存 (编程人员唯一的关注点)
req.getSession().setAttribute("randomCode",randomCode.toString());
//禁止图像缓存
resp.setHeader("Pragma", "no-cache");
resp.setHeader("Cache-control", "no-cache");
resp.setDateHeader("Expires", 0);
resp.setContentType("image/jpeg");
//输出图像
ServletOutputStream sos=resp.getOutputStream();
ImageIO.write(buffImg,"jpeg",sos);
sos.close();
}
  
       
}