多语言展示
当前在线:1959今日阅读:27今日分享:41

使用kaptcha生成验证码

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

eclipse/idea

2

kaptcha-2.3.2.jar或其他版本

方法/步骤
1

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

2

在web.xml文件配置生成验证码的KaptchaServletKaptchaServlet的详细配置如下:                       Kaptcha        com.google.code.kaptcha.servlet.KaptchaServlet                                    kaptcha.border            no                                       kaptcha.textproducer.font.color            red                                    kaptcha.image.width            135                                    kaptcha.textproducer.char.string            ACDEFHKPRSTWX345679                                    kaptcha.image.height            50                                    kaptcha.textproducer.font.size            43                                    kaptcha.noise.color            black                                    kaptcha.textproducer.char.length            4                                    kaptcha.textproducer.font.names            Arial                                   Kaptcha        /Kaptcha.jpg   

3

显示生成的验证码在页面index.jsp显示验证码,代码如下:

4

运行效果如下图所示:

5

在服务器端验证提交的验证码用户在form表单中提交了验证码之后,我们会在服务器端进行验证,编写一个VerifyServlet,代码如下:package me.gacl.web.controller;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class VerifyServlet extends HttpServlet {        public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType('text/html;charaset=utf-8');        response.setHeader('pragma', 'no-cache');        response.setHeader('cache-control', 'no-cache');        PrintWriter out = null;        try {            //响应数据            String resultData;            //获取传过来的验证码            String verifyCode = request.getParameter('verifyCode');            System.out.println('verifyCode----'+verifyCode);            if(verifyCode=='') {                resultData = 'N';            }else {                //获取kaptcha生成存放在session中的验证码                String kaptchaValue = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);                //比较输入的验证码和实际生成的验证码是否相同                if(kaptchaValue == null || kaptchaValue == ''||!verifyCode.equalsIgnoreCase(kaptchaValue)) {                    resultData = 'N';                }else {                    resultData = 'Y';                }            }            out = response.getWriter();            out.write(resultData);            out.flush();        }catch(Exception e) {            e.printStackTrace();        }finally {            if(out != null) {                out.close();            }        }    }}

6

在web.xml中注册VerifyServlet。代码如下:            VerifyServlet        me.gacl.web.controller.VerifyServlet                VerifyServlet        /servlet/VerifyServlet   

7

运行结果如下:  1、验证码不输入

8

2、输入错误的验证码

9

3、输入正确的验证码

10

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

推荐信息