java生成图片验证码示例程序

yizhihongxing

下面就为您介绍一下生成图片验证码的示例程序。

生成图片验证码示例程序

步骤1:导入验证码库

Java中创建一个图片验证码需要用到非常多的API,用起来比较繁琐,因此我们可以使用一些第三方库来简化代码。这里我推荐使用Google的Guava库,该库提供了生成图片验证码的常用API,也可以方便的操作对象、字符串、集合等。

在Maven项目的pom.xml文件中添加以下依赖:

<dependency>
  <groupId>com.google.guava</groupId>
  <artifactId>guava</artifactId>
  <version>29.0-jre</version>
</dependency>

步骤2:生成随机字符

Random random = new Random();
StringBuilder captcha = new StringBuilder();
for (int i = 0; i < 6; i++) {
   char c = (char) (random.nextInt(26) + 65);
   captcha.append(c);
}

这段代码使用Java的随机数生成器生成了一个长度为6的随机字符串,该字符串由英文字母(A-Z)组成。如果您需要生成数字、中文或其他字符的验证码,只需修改生成字符的范围即可。

步骤3:生成验证码图片

int width = 150;
int height = 50;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.BOLD, 32));
g.drawString(captcha.toString(), 25, 35);
g.dispose();

这段代码创建了一个150x50大小的空白图片,使用Java的2D绘图API将随机字符串绘制到图片上,然后返回该图片。

步骤4:将图片输出到HTTP响应中

response.setContentType("image/jpeg");
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "jpeg", out);
out.close();

这段代码设置HTTP响应的内容类型为image/jpeg,然后将生成的图片输出到HTTP响应流中。

示例1:结合Spring Boot使用

下面的代码演示了如何结合Spring Boot创建一个返回图片验证码的接口:

@RestController
public class CaptchaController {

    @GetMapping("/captcha")
    public void generateCaptcha(HttpServletRequest request, HttpServletResponse response) throws IOException {
        Random random = new Random();
        StringBuilder captcha = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            char c = (char) (random.nextInt(26) + 65);
            captcha.append(c);
        }

        int width = 150;
        int height = 50;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = image.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, width, height);
        g.setColor(Color.BLACK);
        g.setFont(new Font("Arial", Font.BOLD, 32));
        g.drawString(captcha.toString(), 25, 35);
        g.dispose();

        response.setContentType("image/jpeg");
        ServletOutputStream out = response.getOutputStream();
        ImageIO.write(image, "jpeg", out);
        out.close();
    }
}

示例2:结合Servlet使用

下面的代码演示了如何结合Servlet创建一个返回图片验证码的接口:

public class CaptchaServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Random random = new Random();
        StringBuilder captcha = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            char c = (char) (random.nextInt(26) + 65);
            captcha.append(c);
        }

        int width = 150;
        int height = 50;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = image.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, width, height);
        g.setColor(Color.BLACK);
        g.setFont(new Font("Arial", Font.BOLD, 32));
        g.drawString(captcha.toString(), 25, 35);
        g.dispose();

        resp.setContentType("image/jpeg");
        ServletOutputStream out = resp.getOutputStream();
        ImageIO.write(image, "jpeg", out);
        out.close();
    }
}

建议将Servlet注册到某个servlet容器中,如Tomcat、Jetty等,然后通过访问 http://localhost:8080/captcha 获取验证码图片。

以上就是生成图片验证码的示例程序的完整攻略,希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java生成图片验证码示例程序 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Maven 项目用Assembly打包可执行jar包的方法

    下面是详细的“Maven 项目用 Assembly 打包可执行 jar 包的方法”的攻略: 一、前提条件 已安装 Maven 并配置环境变量 已经有一个 Maven 项目 二、添加 Assembly 插件到 Maven 项目中 在项目的 pom.xml 文件中添加以下插件配置: <build> <plugins> <plugin…

    Java 2023年6月2日
    00
  • 配置Web应用环境实现JSP留言簿

    下面给出配置Web应用环境实现JSP留言簿的完整攻略。 环境准备 在进行Web应用环境配置之前,需要先准备好以下环境: 安装Java开发环境(JDK) 安装Tomcat服务器 安装一个Java IDE(Eclipse、IntelliJ等) 创建Web应用项目 首先,需要在Java IDE中创建一个Web应用项目。以Eclipse为例,创建步骤如下: 打开Ec…

    Java 2023年6月2日
    00
  • Ubuntu16.04安装部署solr7的图文详细教程

    下面是“Ubuntu16.04安装部署solr7的图文详细教程”的完整攻略: 环境准备 安装Java Solr 7 需要运行在 Java 8 上,所以我们需要先安装 Java 8。 在终端中输入以下命令进行安装: sudo add-apt-repository ppa:webupd8team/java sudo apt update sudo apt ins…

    Java 2023年5月19日
    00
  • 27基于java的学生在线考试系统

    一、项目简介 随着互联网迅速发展,人们的生活已经越来越离不开互联网,人们足不出户就可以工作、学习等。对于在校学生,通过网络教育不仅可以随时进行网络学习,也可以根据学习的情况自我检测,有利于学生高效、快捷地掌握所学的知识。本系统预设计的基于网络的学生自测系统将实现多种用户(包括学生、教师、管理员)同时访问,学生登录后可以针对课程的每一章节的每一道题目,提交答案…

    Java 2023年5月6日
    00
  • 使用@Valid+BindingResult进行controller参数校验方式

    当我们在编写Spring MVC应用程序时,通常需要对传递给控制器方法的参数进行验证。这可以确保我们的应用程序不会因为无效数据而崩溃或出现意外行为。Spring提供了一种简单而强大的机制来执行这些验证操作 – 使用@Valid注释。 在使用@Valid进行校验时,我们需要与BindingResult参数结合使用。BindingResult提供了与校验相关的各…

    Java 2023年5月20日
    00
  • 详解JVM的内存对象介绍[创建和访问]

    详解JVM的内存对象介绍[创建和访问] 简介 JVM(Java Virtual Machine)是一个虚拟机,它是Java程序运行的环境。在JVM中,所有的变量、对象都是存储在内存中的。本文将介绍JVM中的内存对象创建和访问的过程和相关知识点。 JVM内存分区 JVM中的内存分为三个部分: 堆(Heap):用于存储对象以及数组等数据。堆是Java运行时的主要…

    Java 2023年5月26日
    00
  • Java反射中java.beans包学习总结

    来讲一讲“Java反射中java.beans包学习总结”的攻略吧。 1. 什么是Java反射以及java.beans包 Java中的反射是指:在运行时动态地获取类的信息,比如获取类的构造方法、类的字段信息、类的方法信息等等。这样,我们就可以在运行时获得类的各种信息并进行操作,打破了类的封装性,增加了代码的灵活性。 Java中的java.beans包是操作Ja…

    Java 2023年5月26日
    00
  • Spring注解驱动之ApplicationListener用法解读

    下面我来详细讲解 Spring 注解驱动中的 ApplicationListener 用法。首先需要了解的是,Spring 中的 ApplicationListener 是一个事件监听器,可以监听 Spring 容器中的各种事件,并在事件发生时自动作出相应的处理,比如记录日志、发送邮件等等。ApplicationListener 的用法包括两个步骤:创建监听…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部