博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用kaptcha生成验证码
阅读量:7197 次
发布时间:2019-06-29

本文共 5294 字,大约阅读时间需要 17 分钟。

hot3.png

 kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小、颜色、显示的字符等等。下面就来讲一下如何使用kaptcha生成验证码以及在服务器端取出验证码进行校验。

一、搭建测试环境

1.1、创建Web测试项目

  新建一个Web项目,并将kaptcha-2.3.2.jar放在项目的WEB-INF/lib目录下,如下图所示:

  

1.2、在web.xml文件配置生成验证码的KaptchaServlet

  KaptchaServlet的详细配置如下:

复制代码
1 
2
7
8
index.jsp
9
10 11
12
13
14
Kaptcha
15
com.google.code.kaptcha.servlet.KaptchaServlet
16 17
18
19
kaptcha.border
20
no
21
22
23
24
kaptcha.textproducer.font.color
25
red
26
27
28
29
kaptcha.image.width
30
135
31
32
33
34
kaptcha.textproducer.char.string
35
ACDEFHKPRSTWX345679
36
37
38
39
kaptcha.image.height
40
50
41
42
43
44
kaptcha.textproducer.font.size
45
43
46
47
48
49
kaptcha.noise.color
50
black
51
52
53
54
kaptcha.textproducer.char.length
55
4
56
57
58
59
kaptcha.textproducer.font.names
60
Arial
61
62
63
64
65
Kaptcha
66
/Kaptcha.jpg
67
68
复制代码

1.3、显示生成的验证码

  在页面index.jsp显示验证码

复制代码
1 <%@ page language="java" pageEncoding="UTF-8"%> 2  3  4    5     显示KaptchaServlet生成的验证码 6      7     39   40   41   42        
43
44
45
48
53
54
55
58
61
62
46 请输入验证码:47 49 50 51 看不清,换一张52
56  57 59 60
63
64 65
复制代码

  运行效果如下图所示:

  

1.4、在服务器端验证提交的验证码

  用户在form表单中提交了验证码之后,我们会在服务器端进行验证,编写一个VerifyServlet,代码如下:

复制代码
1 /** 2  *  3  */ 4 package me.gacl.web.controller; 5  6 import java.io.IOException; 7 import java.io.PrintWriter; 8  9 import javax.servlet.ServletException;10 import javax.servlet.http.HttpServlet;11 import javax.servlet.http.HttpServletRequest;12 import javax.servlet.http.HttpServletResponse;13 14 public class VerifyServlet extends HttpServlet {15 16     17     public void doGet(HttpServletRequest request, HttpServletResponse response)18             throws ServletException, IOException {19 20         response.setContentType("text/html;charaset=utf-8");21         response.setHeader("pragma", "no-cache");22         response.setHeader("cache-control", "no-cache");23         PrintWriter out = null;24         try {25             //响应数据26             String resultData;27             //获取传过来的验证码28             String verifyCode = request.getParameter("verifyCode");29             System.out.println("verifyCode----"+verifyCode);30             if(verifyCode=="") {31                 resultData = "N";32             }else {33                 //获取kaptcha生成存放在session中的验证码34                 String kaptchaValue = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);35                 //比较输入的验证码和实际生成的验证码是否相同36                 if(kaptchaValue == null || kaptchaValue == ""||!verifyCode.equalsIgnoreCase(kaptchaValue)) {37                     resultData = "N";38                 }else {39                     resultData = "Y";40                 }41             }42             out = response.getWriter();43             out.write(resultData);44             out.flush();45         }catch(Exception e) {46             e.printStackTrace();47         }finally {48             if(out != null) {49                 out.close();50             }51         }52     }53 }
复制代码

  在web.xml中注册VerifyServlet

复制代码
1 
2
3
VerifyServlet
4
me.gacl.web.controller.VerifyServlet
5
6
7
VerifyServlet
8
/servlet/VerifyServlet
9
复制代码

  运行结果如下:

  1、验证码不输入

  

  2、输入错误的验证码

  

  3、输入正确的验证码

  

  使用kaptcha生成验证码感觉挺不错的,非常好用和方便。

转载于:https://my.oschina.net/zhanghaiyang/blog/595080

你可能感兴趣的文章
问题tips
查看>>
QEMU漏洞挖掘
查看>>
ios 下拉刷新 上拉更多
查看>>
数据结构之病毒感染检测问题
查看>>
PHP-Manual的学习----【序言】
查看>>
3、Lambda表达式
查看>>
梦断代码阅读笔记02
查看>>
HDU 4001 To Miss Our Children Time
查看>>
ORACLE表建立自增列
查看>>
PHP----------用curl方式请求接口在同一个项目里面的时候不能请求的情况
查看>>
phpstorm----------phpstorm设置自动更新的ssh信息如何修改--后续增加如何设置自动更新...
查看>>
java指纹识别+谷歌图片识别技术_源代码
查看>>
如何正确的创建线程
查看>>
关于zsh在使用scp时报错zsh: no matches found: scp
查看>>
NOP 扩展新表步骤
查看>>
classmethod、staticclassmethod内置装饰器函数
查看>>
052(十九)
查看>>
Servlet 3特性:异步Servlet
查看>>
第九章 运算符
查看>>
用了这个方法,你也可以做到45°的回测曲线(转自 BotVS )
查看>>