java下使用kaptcha生成验证码

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

一、搭建测试环境

1.1、创建Web测试项目

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

  java下使用kaptcha生成验证码_第1张图片

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

KaptchaServlet的详细配置如下:



 
 index.jsp
 
 
 
 
 
 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
 

1.3、显示生成的验证码

在页面index.jsp显示验证码

<%@ page language="java" pageEncoding="UTF-8"%>


 
 显示KaptchaServlet生成的验证码
 
 
 
 
 
 
请输入验证码: 看不清,换一张
 

运行效果如下图所示:

  java下使用kaptcha生成验证码_第2张图片

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

  用户在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


 
 VerifyServlet
 me.gacl.web.controller.VerifyServlet
 
 
 VerifyServlet
 /servlet/VerifyServlet
 

  运行结果如下:

  1、验证码不输入

java下使用kaptcha生成验证码_第3张图片

  2、输入错误的验证码

java下使用kaptcha生成验证码_第4张图片

  3、输入正确的验证码

java下使用kaptcha生成验证码_第5张图片

使用kaptcha生成验证码感觉挺不错的,非常好用和方便,希望大家可以熟练掌握。

你可能感兴趣的:(java下使用kaptcha生成验证码)