`
jdluojing
  • 浏览: 18029 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

Java生成验证码图片的程序

 
阅读更多
    package test;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.OutputStream;
    import java.util.Random;

    import javax.imageio.ImageIO;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;


    public class ImageGenerator extends HttpServlet {
      /** *//**
       *
       */
      private static final long serialVersionUID = -3938318741402322164L;

      private static Color getRandColor(int fc, int bc) {
        Random random = new Random();
        if (fc > 255)
          fc = 255;
        if (bc > 255)
          bc = 255;
        int r = fc + random.nextInt(bc - fc);
        int g = fc + random.nextInt(bc - fc);
        int b = fc + random.nextInt(bc - fc);
        return new Color(r, g, b);
      }

      private static String charsLong = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ";

      private static String charsShort = "0123456789";

      private static String chars = charsLong;

      @Override
      public void doGet(HttpServletRequest request, HttpServletResponse response) {
        try {
          int charsLength = chars.length();

          response.setHeader("Pragma", "No-cache");
          response.setHeader("Cache-Control", "no-cache");
          response.setDateHeader("Expires", 0);

          int width = 70, height = 20;
          BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

          Graphics g = image.getGraphics();

          Random random = new Random();

          g.setColor(getRandColor(200, 250));
          g.fillRect(0, 0, width, height);

          g.setFont(new Font("Times New Roman", Font.ITALIC, height));

          g.setColor(getRandColor(160, 200));
          for (int i = 0; i < 35; 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);
          }

          StringBuilder sRand = new StringBuilder();
          String[] fontNames = { "Times New Roman", "Arial", "Book antiqua", "" };

          for (int i = 0; i < 4; i++) {
            g.setFont(new Font(fontNames[random.nextInt(3)], Font.ITALIC, height));
            char rand = chars.charAt(random.nextInt(charsLength));
            sRand.append(rand);

            g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
            g.drawString(String.valueOf(rand), 16 * i + random.nextInt(6) + 3, height - random.nextInt(4));
          }

          g.setColor(getRandColor(160, 200));
          for (int i = 0; i < 30; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(width);
            int yl = random.nextInt(width);
            g.drawLine(x, y, x + xl, y + yl);
          }

          request.getSession().setAttribute("Login_Image_Code", sRand.toString());

          g.dispose();

          try {
            Thread.sleep(100);
          } catch (Exception ex) {
          }
          OutputStream os = response.getOutputStream();
          ImageIO.write(image, "JPEG", os);
          os.flush();
          os.close();
        } catch (Exception ex) {

        }
      }
    }

 

    修改 web.xml

 

    <servlet>
            <servlet-name>imageGenerator</servlet-name>
            <servlet-class>test.ImageGenerator</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>imageGenerator</servlet-name>
            <url-pattern>/image.jsp</url-pattern>
        </servlet-mapping>

分享到:
评论

相关推荐

    java生成验证码的参考资料(中英文验证码)

    总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...

    java生成验证码demo

    这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...

    java 生成图片验证码

    在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。

    java生成图片验证码

    首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java环境中生成随机的、可读性较差的文本,并将其转化为图像的过程,以创建一个验证码。验证码通常由字母、数字或两者混合组成,设计的目的...

    java生成验证码代码

    在Java中生成验证码涉及到图像处理、随机数生成以及字符编码等多个知识点。以下将详细介绍如何在Java中创建一个能生成中文、英文和数字的验证码。 1. **随机数生成**:首先,我们需要生成随机的验证码字符。Java...

    生成验证码图片的jsp代码

    在Web开发中,使用JSP(JavaServer Pages)来生成验证码图片是一种常见的方法。下面我们将详细讨论如何在JSP中实现验证码的生成。 首先,我们需要理解验证码的基本原理。验证码通常包含一串随机的字母和数字,有时...

    验证码生成工具类

    在Java中,生成验证码的步骤包括: 1. **设计验证码内容**:首先,我们需要创建一个包含随机字符或数字的字符串。可以使用`java.util.Random`类生成随机数,并结合字符数组生成随机字符串。为了增加难度,通常会...

    java图片验证码源码

    验证码(Vercode)是网络应用中常用的一种...总的来说,创建Java图片验证码涉及多个技术点,包括字符串生成、图像处理、随机数生成等。通过理解并实践这些技术,开发者可以创建出适合自己应用的高效安全的验证码系统。

    java web笔记之servlet生成验证码

    本笔记将详细探讨如何使用Servlet来生成验证码。 一、验证码的原理与作用 验证码的主要目的是区分人类用户和自动化程序,通过要求用户输入图片上的文字或者完成简单的数学问题,来验证其为真实的人类。这有助于防止...

    java 生成彩色验证码

    java 生成彩色验证码的程序,改程序可以极大的帮助你,是你可以自动生成彩色的验证码

    java生成的随机验证码

    验证码是网络应用中常见的一种安全机制,用于防止自动...总的来说,Java生成随机验证码的过程涵盖了随机数生成、字符串处理、图像处理等多个编程领域。通过合理的设计和实现,可以创建出既安全又用户友好的验证码系统。

    JAVA一段生成验证码图片的程序

    这段Java代码是一个生成验证码图像的程序,用于创建随机的、难以自动识别的字符序列,通常用于网站或应用程序的安全验证,防止机器人或自动化脚本进行恶意操作。验证码的主要目的是确保操作是由真实的人执行的,而...

    java生成随机加减法的图形验证码

    首先,`IdentifyingCode.java`可能是一个类,它代表验证码对象,包含了生成验证码的核心逻辑。这个类通常会包含以下几个关键部分: 1. **生成随机数字**:为了创建加减法问题,我们需要生成两个或更多随机整数。...

    Java 生成验证码示例

    - 一个Servlet(如`GenerateCodeServlet.java`),处理HTTP请求,生成验证码图片,并将验证码值存储在会话中。 - 一个JSP页面(如`authCode.jsp`),展示验证码图片并接收用户输入。 - 可能还有配置文件(如`web.xml...

    生成验证码 jsp 图片验证码

    验证码通常包含一串随机生成的字母和数字,显示在一张图片上,用户需要输入看到的文字以证明他们不是计算机程序。这样,只有人类能够完成验证,而机器由于无法识别图片中的文本,因此无法自动完成任务。 在JSP...

    生成java登陆验证码的小程序

    - `java.util.Random` 类用于生成验证码的随机数字或字母。可以设置一个字符集,包含大小写字母和数字,然后通过随机数选择字符。 - 验证码的长度通常为4到6位,根据需求确定。 3. 字符编码: - 生成的随机字符...

    JSP中利用Servlet生成验证码图片

    ### JSP中利用Servlet生成验证码图片 在Web应用开发中,验证码被广泛应用于用户登录、表单提交等场景,以防止自动化的恶意攻击。本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个...

    验证码的生成工具 Java

    在Java中,我们可以利用多种库和技术来生成这种安全的图像验证码。本项目提供的是一款用Java编写的验证码生成工具,包括showyanzhengma.exe可执行文件、yanzhengma6(50).exe以及yanzhengma6(50).jar文件。 验证码的...

    JAVA动态生成验证码的JAVA实现的代码

    在JAVA编程语言中,我们可以实现动态生成验证码的机制,以提供安全的用户验证体验。下面将详细介绍如何在JAVA中实现验证码的生成。 首先,验证码通常由一组随机字符(包括字母、数字)组成,它们被扭曲、旋转或添加...

    java jcaptcha 验证码 生成

    - **生成验证码**:调用`CaptchaService`的`getChallengeForID()`方法,传入一个唯一标识,返回一个包含验证码图像和对应的文本的`DefaultCaptcha`对象。 - **保存验证码**:通常将验证码的文本部分存储在会话...

Global site tag (gtag.js) - Google Analytics