sturts实现随机验证码

public class ImageAction extends Action{

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  //设置响应输入的格式
  response.setContentType("image/jpeg");
  //设置图片的大小,设置图片的组成方式,下面是以三原色的方式合成的图片
  BufferedImage image=new BufferedImage(80,40,BufferedImage.TYPE_INT_RGB);//BufferedImage.TYPE_INT_RGB传统的色彩三原色
  //生成画笔
  Graphics g=image.getGraphics();
  Graphics2D g2=(Graphics2D)g;
  //画背景
  g2.setColor(Color.WHITE);
  
  g2.fillRect(0, 0, 80, 40);//x,y是确定的坐标
  Random random=new Random();
  for(int i=0;i<10;i++){
   int y1=random.nextInt(40);
   int y2=random.nextInt(40);
   //随机画线
   g2.setColor(getColor());
   g2.drawLine( 0, y1, 80, y2);//从一个坐标划到另一个坐标
      }
  char[] c=new char[36];
  for(int i=48;i<58;i++){
   c[i-48]=(char)i;
  }
  for(int i=65;i<91;i++){
   c[i-55]=(char)i;
  }
  String str="";
  g2.setFont(new Font("Sans",Font.BOLD,20));
  for(int i=0;i<4;i++){
   int k=random.nextInt(36);
   g2.setColor(getColor());
   g2.drawString(String.valueOf(c[k]), 8+i*20, 25);
   str+=c[k];
  }
  request.getSession().setAttribute("number",str);
     JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(response.getOutputStream());//response.getOutputStream()响应的输出流
  encoder.encode(image);
     return null;
 }
 //随机产生颜色
 private Color getColor(){
  Random random=new Random();//获得一个随机数
     int r=random.nextInt(255);
     int r1=random.nextInt(255);
     int r2=random.nextInt(255);
     return new Color(r,r1,r2);
    
 }

}

你可能感兴趣的:(exception,image,String,Random,Class,action)