java生成动态验证码

作用:防止表单重复提交 恶意注册

package netVideo.formBean;



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.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class RandomImage extends HttpServlet
{
  private static String identify;


  public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
  {
    ServletOutputStream out = response.getOutputStream();
    response.setHeader("Expires", "-1");
    BufferedImage im = new BufferedImage(80, 30, 1);
    Graphics grap = im.getGraphics();
    grap.setColor(Color.WHITE);
    grap.fillRect(0, 0, 80, 30);
    grap.setColor(Color.red);
    Random random = new Random();
    for (int i = 0; i < 160; i++)
    {
      int x = random.nextInt(80);
      int y = random.nextInt(30);
      int xl = random.nextInt(12);
      int yl = random.nextInt(12);
      grap.drawLine(x, y, x + xl, y + yl);
    }
    grap.setColor(Color.blue);
    grap.setFont(new Font("宋体", 1, 30));
    identify = makeString();
    grap.drawString(identify, 0, 30);
    response.setContentType("image/jpeg");
    ImageIO.write(im, "jpeg", out);
  }
  private String makeString() {
    Random rand = new Random();
    String str = String.valueOf(rand.nextInt(9999));
    StringBuffer sb = new StringBuffer(str);
    for (int i = 0; i < 4 - str.length(); i++)
    {
      sb.append("0");
    }
    return sb.toString();
  }


  public static String getString() {
    return identify;
  }


  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值