kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小、颜色、显示的字符等等。下面就来讲一下如何使用kaptcha生成验证码以及在服务器端取出验证码进行校验。
一、搭建测试环境
1.1、创建Web测试项目
新建一个Web项目,并将kaptcha-2.3.2.jar放在项目的WEB-INF/lib目录下,如下图所示:
1.2、在web.xml文件配置生成验证码的KaptchaServlet
KaptchaServlet的详细配置如下:
1 27 8 10 11 12index.jsp 913 14 63 64Kaptcha 15com.google.code.kaptcha.servlet.KaptchaServlet 16 17 1819 22 23kaptcha.border 20no 2124 27 28kaptcha.textproducer.font.color 25red 2629 32 33kaptcha.image.width 30135 3134 37 38kaptcha.textproducer.char.string 35ACDEFHKPRSTWX345679 3639 42 43kaptcha.image.height 4050 4144 47 48kaptcha.textproducer.font.size 4543 4649 52 53kaptcha.noise.color 50black 5154 57 58kaptcha.textproducer.char.length 554 5659 62kaptcha.textproducer.font.names 60Arial 6165 68Kaptcha 66/Kaptcha.jpg 67
1.3、显示生成的验证码
在页面index.jsp显示验证码
1 <%@ page language="java" pageEncoding="UTF-8"%> 2 3 4 564 65显示KaptchaServlet生成的验证码 6 7 39 40 41 42
运行效果如下图所示:
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 23 6VerifyServlet 4me.gacl.web.controller.VerifyServlet 57 VerifyServlet 8/servlet/VerifyServlet 9
运行结果如下:
1、验证码不输入
2、输入错误的验证码
3、输入正确的验证码
使用kaptcha生成验证码感觉挺不错的,非常好用和方便。