专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java生成验证码图片的代码

Java生成验证码图片的代码

更新时间:2022-06-16 11:07:57 来源:赢咖4 浏览1127次

赢咖4小编来告诉大家最简单的生成java的图片验证码的方法,供大家参考。

现在所有行业都在考虑机器注册来定制他们的系统,最有效的方法是输入验证。有很多方法可以验证:

1.问题验证,也就是图片验证,在图片上生成问题,然后在输入框中输入答案。

2.图片验证,输入图片上显示的文字信息。

3.短信验证,比较复杂,用户不喜欢。

4.还有百度最新的验证方式。在图像上生成文本,然后出现一个文本单击框,选择您在验证图像上看到的文本。

现在分享一段java生成验证码的代码,这是一段基本的代码。可以直接在学习中使用,如果需要更复杂的验证,可以添加自己的逻辑验证。

@Controller
public class ImgVerifyCode extends HttpServlet { 
  /**
   *
   */
  private static final long serialVersionUID = 1L; 
  /**
   *  The width of the captcha image. 
   */
  private int width = 70;
  /**
   *  Captcha image height. 
   */
  private int height =30; 
  /**
   *  Number of verification code characters 
   */
  private int codeCount = 5; 
  /**
   * xx
   */
  private int xx = 0;
  /**
   *  The font height 
   */
  private int fontHeight; 
  /**
   * codeY
   */
  private int codeY; 
  /**
   * codeSequence
   */
   String[] codeSequence = { "1" , "2" , "3" , "4" , "5" ,"6","7","8","9","A","a","B","b","c","C"
       ,"D","d","E","e","F","f","G","g","z","X","Q","v"}; 
  /**
   *  Initializes the validation image properties 
   */
  public void init() throws ServletException {
    //  from web.xml Get the initial information in 
    //  The width of the 
    String strWidth =width+"";
    //  highly 
    String strHeight = height+"";
    //  The number of characters 
    String strCodeCount = codeCount+"";
    //  Converts configuration information to numeric values 
    try {
      if (strWidth != null && strWidth.length() != 0) {
        width = Integer.parseInt(strWidth);
      }
      if (strHeight != null && strHeight.length() != 0) {
        height = Integer.parseInt(strHeight);
      }
      if (strCodeCount != null && strCodeCount.length() != 0) {
        codeCount = Integer.parseInt(strCodeCount);
      }
    } catch (NumberFormatException e) {
      e.printStackTrace();
    } 
    xx = width / (codeCount + 2); // Generates the horizontal distance of the random number 
    fontHeight = height - 12;   // The height of a number to generate a random number 
    codeY = height - 8;      // Generate the vertical distance of the random number  
  } 
  protected String images(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException,IOException {
    init();
    //  Define the image buffer
    BufferedImage buffImg = new BufferedImage(width, height,
        BufferedImage.TYPE_INT_RGB);
    Graphics2D gd = buffImg.createGraphics(); 
    //  create 1 Random number generator class 
    Random random = new Random(); 
    //  Fill the image with white 
    gd.setColor(Color.WHITE);
    gd.fillRect(0, 0, width, height); 
    //  Create a font. The size of the font should depend on the height of the image. 
    Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
    //  Set the font. 
    gd.setFont(font); 
    //  Picture frame. 
    gd.setColor(Color.BLACK);
    gd.drawRect(0, 0, width - 1, height - 1); 
    //  Randomly generated 4 Interference line, so that the authentication code in the image is not easily detected by other programs. 
    gd.setColor(Color.BLACK);
    for (int i = 0; i < 4; i++) {
      int x = random.nextInt(width);
      int y = random.nextInt(height);
      int xl = random.nextInt(12);
      int yl = random.nextInt(12);
      gd.drawLine(x, y, x + xl, y + yl);
    } 
    // randomCode Used to save the randomly generated captcha for user authentication after login. 
    StringBuffer randomCode = new StringBuffer();
    int red = 0, green = 0, blue = 0; 
    //  Randomly generated codeCount Number verification code. 
    for (int i = 0; i < codeCount; i++) {
      //  Get the randomly generated captcha number. 
      String strRand = String.valueOf(codeSequence[random.nextInt(27)]);
      //  Generate a random color component to construct a color value, so that the color value of each number output will be different. 
      red = random.nextInt(125);
      green = random.nextInt(255);
      blue = random.nextInt(200); 
      //  Draws the captcha into the image with randomly generated colors. 
      gd.setColor(new Color(red, green, blue));
      gd.drawString(strRand, (i + 1) * xx, codeY); 
      //  Will produce the 4 I'm going to have a bunch of random Numbers 1 Up. 
      randomCode.append(strRand);
    }
    //  will 4 The numeric captcha is saved to Session In the. 
    HttpSession session = req.getSession();
    session.setAttribute("validateCode", randomCode.toString()); 
    //  Disable image caching. 
    resp.setHeader("Pragma", "no-cache");
    resp.setHeader("Cache-Control", "no-cache");
    resp.setDateHeader("Expires", 0); 
    resp.setContentType("image/jpeg"); 
    //  Output the image to Servlet In the output stream. 
    ServletOutputStream sos = resp.getOutputStream();
    ImageIO.write(buffImg, "jpeg", sos);
    sos.close();
    return null;
  }
   } 

此代码是生成验证图像的基本方法。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>