kaptcha验证码使用

Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码。以图片的形式显示,从而无法进行复制粘贴。

引入相关jar包

在Servelt中配置kaptcha的Servlet

<!-- kaptcha验证码配置 -->
  <servlet>
    <servlet-name>kaptcha</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    <init-param>
        <param-name>kaptcha.border</param-name>
        <param-value>no</param-value>
    </init-param>
    <init-param>
        <param-name>kaptcha.textproducer.font.color</param-name>
        <param-value>black</param-value>
    </init-param>
    <init-param>
        <param-name>kaptcha.textproducer.char.space</param-name>
        <param-value>5</param-value>
    </init-param>
  </servlet>
   
  <servlet-mapping>
        <servlet-name>kaptcha</servlet-name>
        <url-pattern>/kaptcha.jpg</url-pattern>
 </servlet-mapping>

kaptcha.border:是否显示边框。

kaptcha.textproducer.font.color:字体颜色

kaptcha.textproducer.char.space:字符间距

更多的属性设置可以在com.google.code.kaptcha.Constants类中找到。其中包括:

kaptcha.border.color:边框颜色

kaptcha.border.thickness:边框宽度

kaptcha.textproducer.char.length:产生字符的长度

kaptcha.textproducer.font.size:产生字符的大小

kaptcha.image.width:产生图片的宽度

kaptcha.image.height:产生图片的高度,等

编写一个显示验证码的页面,index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script type="text/javascript" src="statics/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
    //验证码刷新功能
    function refreshCaptcha() {
        //Math.floor();向下取整
        //jQuery效果,fadeIn() 方法使用淡入效果来显示被选元素,假如该元素是隐藏的。
        $('#vcode').hide().attr(
            'src',
            'kaptcha.jpg?'+ Math.floor(Math.random() * 100)).fadeIn();
    }
</script>
<body>
    <form action="kaptcha" method="post">
        <input type="text" name="kaptchaValidate">
        <img onclick="refreshCaptcha()" id="vcode" style="vertical-align: middle;" title="点击更换" alt="验证图片" src="kaptcha.jpg" height="40" width="85">
        <input type="submit" value="提交">
    </form>
</body>
</html>

编写一个验证的Servelt以及web.xml的配置

package cn.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import com.google.code.kaptcha.Constants;
 
public class KaptchaServlet extends HttpServlet {
 
    private static final long serialVersionUID = -7642000788132875193L;
     
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String validate = req.getParameter("kaptchaValidate");
        String validateCode = (String) req.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
         
        if(validate==null || validateCode == null){
            resp.sendRedirect("fail.html");
        }else if(!validateCode.equals(validate)){
            resp.sendRedirect("fail.html");
        }else{
            resp.sendRedirect("success.html");
        }
    }
}
<servlet>
    <servlet-name>validatServlet</servlet-name>
    <servlet-class>cn.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>validatServlet</servlet-name>
    <url-pattern>/kaptcha</url-pattern>
</servlet-mapping>
原文地址:https://www.cnblogs.com/chuanqi1995/p/11584219.html