JAVA验证码

来源:互联网 发布:网络春晚和春晚 编辑:程序博客网 时间:2024/06/05 12:08
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',           'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',           'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };     //定义一个生成的字符数组      // 定义图像buffer          BufferedImage buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB); //画图的工具类 Graphics2D g = buffImg.createGraphics();           // 创建一个随机数生成器类          Random random = new Random();          // 设置字体。           g.setFont(new Font("Fixedsys", Font.PLAIN, fontHeight));  // 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。                  for (int i = 0; i < 10; i++) {                      int x = random.nextInt(width);                      int y = random.nextInt(height);                      int xl = random.nextInt(12);                      int yl = random.nextInt(12);                      g.drawLine(x, y, x + xl, y + yl);                  }          StringBuffer randomCode = new StringBuffer();         //存放随机生成的字符  int red = 0, green = 0, blue = 0;           //颜色  // 随机产生codeCount数字的验证码。           for (int i = 0; i < codeCount; i++) {         // 得到随机产生的验证码数字。           String strRand = String.valueOf(codeSequence[random.nextInt(36)]);           // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。           red = random.nextInt(255);           green = random.nextInt(255);           blue = random.nextInt(255);           // 用随机产生的颜色将验证码绘制到图像中。           g.setColor(new Color(red, green, blue));           g.drawString(strRand, (i + 1) * x, codeY);           // 将产生的四个随机数组合在一起。           randomCode.append(strRand);           }           // 将四位数字的验证码保存到Session中。           HttpSession session = req.getSession();           session.setAttribute("validateCode", randomCode.toString());           // 禁止图像缓存。           resp.setHeader("Pragma", "no-cache");           resp.setHeader("Cache-Control", "no-cache");           resp.setDateHeader("Expires", 0);           resp.setContentType("image/jpeg");         // 将图像输出到Servlet输出流中。           ServletOutputStream sos = resp.getOutputStream();           ImageIO.write(buffImg, "jpeg", sos);           sos.close();             
0 0
原创粉丝点击