# EasyCaptcha
**Repository Path**: libran/EasyCaptcha
## Basic Information
- **Project Name**: EasyCaptcha
- **Description**: JavaWeb图形验证码,支持gif验证码,可用于基于的session的web项目和前后端分离的项目。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 619
- **Created**: 2018-07-03
- **Last Updated**: 2020-12-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# EasyCaptcha
JavaWeb图形验证码,支持gif验证码,可用于基于的session的web项目和前后端分离的项目。
## 效果展示

刷新页面可以重新生成验证码图片。
## 导入项目
### gradle方式的引入
需要先在project的build.gradle中添加:
```
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
```
在项目的build.gradle中添加
```
dependencies {
compile 'com.github.whvcse:EasyCaptcha:1.1.0'
}
```
### maven方式引入
```xml
jitpack.io
https://jitpack.io
com.github.whvcse
EasyCaptcha
1.1.0
```
### jar包下载
[EasyCaptcha-1.1.0.jar](https://github.com/whvcse/EasyCaptcha/releases)
## 使用方法
### 快速使用
1.在web.xml里面加入如下配置:
```xml
CaptchaServlet
com.wf.captcha.servlet.CaptchaServlet
CaptchaServlet
/images/captcha
```
2.前端代码
```html
```
### 在*SpringMVC*中使用
如果你不想使用项目提供的servlet,可以使用controller的形式实现,方法也很简单,代码如下:
```java
@RequestMapping("/images/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) {
CaptchaUtil captcha = new CaptchaUtil();
try {
captcha.out(request, response);
} catch (IOException e) {
e.printStackTrace();
}
}
```
前端代码:
```html
```
### 前后端分离中使用
验证码一般都是保存在session中的,但是在前后端分离的项目中,不推荐使用session存储,可使用如下方式:
```java
@RequestMapping("/images/captcha")
public void captcha(String key, HttpServletRequest request, HttpServletResponse response) {
CaptchaUtil captcha = new CaptchaUtil();
try {
captcha.out(key, request, response);
} catch (IOException e) {
e.printStackTrace();
}
}
```
与前面的使用区别就在于多了一个key,使用的时候需要前端生成一个随机key传递过来,服务器是已这个key为名字存储在servletContext中的,取的时候需要根据这个key取值。
前后端分离也同样可以使用框架自带的servlet,使用方式如下:
```html
```
### 判断验证码是否正确
基于session存储的判断:
```java
CaptchaUtil captcha = new CaptchaUtil();
if (captcha == null || !captcha.ver(code, request)) {
return JsonResult.error("验证码不正确");
}
```
前后端分离方式的判断:
```java
CaptchaUtil captcha = new CaptchaUtil();
if (captcha == null || !captcha.ver(key, code, request)) {
return JsonResult.error("验证码不正确");
}
//此处的key便是生成的时候传递的key
```
### 参数设置
#### 设置宽高和位数
```java
//三个参数分别是宽、高、位数
CaptchaUtil captcha = new CaptchaUtil(130, 38, 5);
```
#### 修改存储时候的key
```java
CaptchaUtil captcha = new CaptchaUtil();
captcha.setCodeName("captcha");
```
默认存在session中是以captcha为key存储的,存储在servletContext中是以captcha-xxx为key存储的,xxx是生成的时候前端传递的key。