diff --git a/README.md b/README.md index aba6d4f..80a6fcb 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,35 @@ # EasyCaptcha -JavaWeb图形验证码,支持gif验证码,可用于基于的session的web项目和前后端分离的项目。 -## 效果展示 -![验证码](http://115.159.40.243:8080/EasyWeb/image/captcha?codeKey=a) -刷新页面可以重新生成验证码图片。  -  -## 导入项目 -### gradle方式的引入 +## 1.简介 + +  Java图形验证码,支持gif验证码,可用于Java Web、JavaSE和Android项目。 + + +## 2.效果展示 + +**gif效果:** + +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftog813jz9g303m01cjrc.jpg) +   +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftogh8z6hug303m01cdfs.jpg) +   +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftoghsymykg303m01c3yg.jpg) + +**png效果:** + +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftogec24tbj303m01cmwx.jpg) +   +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftogf2vvodj303m01cjr5.jpg) +   +![验证码](https://ws1.sinaimg.cn/large/006a7GCKgy1ftogfxh2rwj303m01cjr5.jpg) + + + +## 3.导入项目 + +### 2.1.gradle方式的引入 需要先在project的build.gradle中添加: -``` +```text allprojects { repositories { maven { url 'https://jitpack.io' } @@ -16,62 +37,73 @@ allprojects { } ``` 在项目的build.gradle中添加 -``` +```text dependencies { - compile 'com.github.whvcse:EasyCaptcha:1.1.0' + compile 'com.github.whvcse:EasyCaptcha:1.2.0' } ``` -### maven方式引入 +### 2.2.maven方式引入 +在你的pom.xml中添加如下代码: ```xml - - - jitpack.io - https://jitpack.io - - + + + + jitpack.io + https://jitpack.io + + + + + + com.github.whvcse + EasyCaptcha + 1.1.0 + + + - - - com.github.whvcse - EasyCaptcha - 1.1.0 - - ``` -### jar包下载 -[EasyCaptcha-1.1.0.jar](https://github.com/whvcse/EasyCaptcha/releases) +### 2.3.jar包下载 +[EasyCaptcha-1.2.0.jar](https://github.com/whvcse/EasyCaptcha/releases) -## 使用方法 -### 快速使用 + +--- + + +## 3.使用方法 + +### 3.1.快速使用 1.在web.xml里面加入如下配置: ```xml - - - CaptchaServlet - com.wf.captcha.servlet.CaptchaServlet - - - CaptchaServlet -    /images/captcha - + + + + CaptchaServlet + com.wf.captcha.servlet.CaptchaServlet + + + CaptchaServlet +    /images/captcha + + + ``` 2.前端代码 ```html ``` -### 在*SpringMVC*中使用 -如果你不想使用项目提供的servlet,可以使用controller的形式实现,方法也很简单,代码如下: +### 3.2.在SpringMVC中使用 +也可以使用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(); +@Controller +public class MainController { + + @RequestMapping("/images/captcha") + public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception { + CaptchaUtil.out(request, response); } } ``` @@ -80,55 +112,38 @@ public void captcha(HttpServletRequest request, HttpServletResponse response) { ``` -### 前后端分离中使用 -验证码一般都是保存在session中的,但是在前后端分离的项目中,不推荐使用session存储,可使用如下方式: +### 3.3.判断验证码是否正确 + ```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(); +@Controller +public class LoginController { + + @PostMapping("/login") + public JsonResult login(String username,String password,String code){ + + if (CaptchaUtil.ver(code, request)) { + return JsonResult.error("验证码不正确"); + } + } +} +``` + +### 3.4.设置宽高和位数 +```java +@Controller +public class MainController { + + @RequestMapping("/images/captcha") + public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception { + // 设置位数 + CaptchaUtil.out(5, request, response); + + // 设置宽、高、位数 + CaptchaUtil.out(130, 48, 5, request, response); } } ``` -与前面的使用区别就在于多了一个key,使用的时候需要前端生成一个随机key传递过来,服务器是已这个key为名字存储在servletContext中的,取的时候需要根据这个key取值。 -前后端分离也同样可以使用框架自带的servlet,使用方式如下: -```html - - +## 4.更多设置 -``` - -### 判断验证码是否正确 -基于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。 +### diff --git a/pom.xml b/pom.xml index 2b669a3..f441d71 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ jar EasyCaptcha - Java web图形验证码,支持gif验证码。 + Java图形验证码,支持gif验证码。 https://github.com/whvcse/EasyCaptcha diff --git a/src/test/java/com/wf/captcha/CaptchaTest.java b/src/test/java/com/wf/captcha/CaptchaTest.java index 071a398..641bf70 100644 --- a/src/test/java/com/wf/captcha/CaptchaTest.java +++ b/src/test/java/com/wf/captcha/CaptchaTest.java @@ -15,13 +15,13 @@ public class CaptchaTest { public void test() throws Exception { SpecCaptcha specCaptcha = new SpecCaptcha(); System.out.println(specCaptcha.text()); - specCaptcha.out(new FileOutputStream(new File("D:/a/aa.png"))); + //specCaptcha.out(new FileOutputStream(new File("D:/a/aa.png"))); } @Test public void testGIf() throws Exception { GifCaptcha specCaptcha = new GifCaptcha(130, 48, 5); System.out.println(specCaptcha.text()); - specCaptcha.out(new FileOutputStream(new File("D:/a/aa.gif"))); + //specCaptcha.out(new FileOutputStream(new File("D:/a/aa.gif"))); } }