littlebot
Published on 2025-04-13 / 2 Visits
0

【源码】基于Java的图形验证码生成器

项目简介

本项目是基于Java的图形验证码生成系统,支持生成静态图片验证码、GIF动画验证码、中文验证码和算术验证码等多种类型。可用于Java Web、JavaSE等项目,适配JDK 17及以上版本。

项目的主要特性和功能

  • 多种验证码类型:支持生成静态图片验证码、GIF动画验证码、中文验证码和算术验证码。
  • 自定义设置:可自定义验证码的宽度、高度、长度、字体和字符类型。
  • 抗锯齿效果:生成的验证码图像具有抗锯齿效果,提升用户体验。
  • 干扰元素:验证码图像包含干扰线、干扰圆等元素,增加安全性。
  • 前后端分离支持:支持在前后端分离项目中使用,验证码可存储在Redis中。
  • Base64编码输出:支持将生成的验证码图像转换为Base64编码的字符串。

安装使用步骤

假设用户已经下载了本项目的源码文件。

1. 引入依赖

Gradle方式

groovy dependencies { compile 'com.iqismart:easy-captcha:1.7.1' }

Maven方式

xml <dependencies> <dependency> <groupId>com.iqismart</groupId> <artifactId>easy-captcha</artifactId> <version>1.7.1</version> </dependency> </dependencies>

直接下载JAR包

这里下载easy-captcha-1.7.1.jar,并在项目中引入。

2. 在SpringMVC中使用

```java @Controller public class CaptchaController {

@RequestMapping("/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    CaptchaUtil.out(request, response);
}

} 前端HTML代码:html ```

3. 在Servlet中使用

web.xml中配置Servlet: xml <web-app> <servlet> <servlet-name>CaptchaServlet</servlet-name> <servlet-class>com.iqismart.captcha.servlet.CaptchaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CaptchaServlet</servlet-name> <url-pattern>/captcha</url-pattern> </servlet-mapping> </web-app> 前端HTML代码: html <img src="/captcha" width="130px" height="48px" />

4. 判断验证码是否正确

```java @Controller public class LoginController {

@PostMapping("/login")
public JsonResult login(String username, String password, String verCode) {
    if (!CaptchaUtil.ver(verCode, request)) {
        CaptchaUtil.clear(request);  // 清除session中的验证码
        return JsonResult.error("验证码不正确");
    }
}

} ```

5. 设置宽高和位数

```java @Controller public class CaptchaController {

@RequestMapping("/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 设置位数
    CaptchaUtil.out(5, request, response);
    // 设置宽、高、位数
    CaptchaUtil.out(130, 48, 5, request, response);

    // 使用gif验证码
    GifCaptcha gifCaptcha = new GifCaptcha(130, 48, 4);
    CaptchaUtil.out(gifCaptcha, request, response);
}

} ```

6. 前后端分离项目的使用

```java @Controller public class CaptchaController { @Autowired private RedisUtil redisUtil;

@ResponseBody
@RequestMapping("/captcha")
public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
    SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
    String verCode = specCaptcha.text().toLowerCase();
    String key = UUID.randomUUID().toString();
    // 存入redis并设置过期时间为30分钟
    redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
    // 将key和base64返回给前端
    return JsonResult.ok().put("key", key).put("image", specCaptcha.toBase64());
}

@ResponseBody
@PostMapping("/login")
public JsonResult login(String username, String password, String verCode, String verKey) {
    // 获取redis中的验证码
    String redisCode = redisUtil.get(verKey);
    // 判断验证码
    if (verCode == null || !redisCode.equals(verCode.trim().toLowerCase())) {
        return JsonResult.error("验证码不正确");
    }
}

} 前端使用Ajax获取验证码:html

``` 通过以上步骤,可在Java项目中集成和使用本图形验证码生成器。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】