From 2c47bde8b243e892adebf06dab194e45bba26cbf Mon Sep 17 00:00:00 2001 From: synchronized Date: Mon, 14 May 2018 11:39:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 16 +++ ..._javax_servlet_javax_servlet_api_3_1_0.xml | 13 ++ .idea/misc.xml | 13 ++ .idea/modules.xml | 8 ++ .idea/vcs.xml | 6 + EasyCaptcha.iml | 14 ++ README.md | 134 +++++++++++++++++- 7 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 EasyCaptcha.iml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b151697 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml new file mode 100644 index 0000000..e270b55 --- /dev/null +++ b/.idea/libraries/Maven__javax_servlet_javax_servlet_api_3_1_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d30d09e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b94e445 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/EasyCaptcha.iml b/EasyCaptcha.iml new file mode 100644 index 0000000..889624d --- /dev/null +++ b/EasyCaptcha.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index d454972..129965c 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,134 @@ # EasyCaptcha -JavaWeb图片验证码,支持gif验证码,可用于RESTful风格的项目 +JavaWeb图形验证码,支持gif验证码,可用于基于的session的web项目和前后端分离的项目。 + +## 效果展示 +![验证码](http://115.159.40.243:8080/EasyWeb/image/captcha?codeKey=a) + + +## 导入项目 +### gradle方式的引入 +需要先在project的build.gradle中添加: +``` +allprojects { + repositories { + maven { url 'https://jitpack.io' } + } +} +``` +在项目的build.gradle中添加 +``` +dependencies { + compile 'com.github.whvcse:JwtPermission:1.1.0' +} +``` + +### maven方式引入 +```xml + + + jitpack.io + https://jitpack.io + + + + + + com.github.whvcse + JwtPermission + 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 + /image/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。 \ No newline at end of file