eclipse/idea
kaptcha-2.3.2.jar或其他版本
创建Web测试项目 新建一个Web项目,并将kaptcha-2.3.2.jar放在项目的WEB-INF/lib目录下,如下图所示:
在web.xml文件配置生成验证码的KaptchaServletKaptchaServlet的详细配置如下:
显示生成的验证码在页面index.jsp显示验证码,代码如下:
运行效果如下图所示:
在服务器端验证提交的验证码用户在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(); } } }}
在web.xml中注册VerifyServlet。代码如下:
运行结果如下: 1、验证码不输入
2、输入错误的验证码
3、输入正确的验证码
使用kaptcha生成验证码感觉挺不错的,非常好用和方便。