Java使用Kaptcha验证码

本文介绍了如何在Java项目中使用Kaptcha验证码。Kaptcha是一个基于SimpleCaptcha的开源项目,提供简单易用的配置选项。添加jar包依赖,通过web.xml配置servlet,并可自定义参数如图片尺寸、字体、颜色等。案例中展示了web.xml和index.jsp的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kaptcha是一个基于SimpleCaptcha的验证码开源项目。
官网地址:http://code.google.com/p/kaptcha/

kaptcha的使用比较方便,只需添加jar包依赖之后简单地配置就可以使用了。kaptcha所有配置都可以通过web.xml来完成,如果你的项目中使用了Spring MVC,那么则有另外的一种方式来实现。

1.添加jar包依赖
如果你使用maven来统一管理jar包,则在工程的pom.xml中添加dependency

<!-- kaptcha -->
<dependency>
    <groupId>com.google.code.kaptcha</groupId>
    <artifactId>kaptcha</artifactId>
    <version>2.3.2</version>
</dependency>

如果是非maven管理的项目,则直接在官网下载kaptcha的jar包,然后添加到项目lib库中,下载地址:http://code.google.com/p/kaptcha/downloads/list

2.配置web.xml
上面说了,kaptcha都是在web.xml中配置,我们必须在web.xml中配置kaptcha的servlet,具体如下:

<servlet>
    <servlet-name>Kaptcha</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Kaptcha</servlet-name>
    <url-pattern>/kaptcha.jpg</url-pattern>
</servlet-mapping>

其中servlet的url-pattern可以自定义。

kaptcha所有的参数都有默认的配置,如果我们不显示配置的话,会采取默认的配置。
如果要显示配置kaptcha,在配置kaptcha对应的Servlet时,在init-param增加响应的参数配置即可。示例如下:

<servlet>
    <servlet-name>Kaptcha</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    <init-param>
        <param-name>kaptcha.image.width</param-name>
        <param-value>200</param-value>
        <description>Width in pixels of the kaptcha image.</description>
    </init-param>
    <init-param>
        <param-name>kaptcha.image.height</param-name>
        <param-value>50</param-value>
        <description>Height in pixels of the kaptcha image.</description>
    </init-param>
    <init-param>
        <param-name>kaptcha.textproducer.char.length</param-name>
        <param-value>4</param-value>
        <description>The number of characters to display.</description>
    </init-param>
    <init-param>
        <param-name>kaptcha.noise.impl</param-name>
        <param-value>com.google.code.kaptcha.impl.NoNoise</param-value>
        <description>The noise producer.</description>
    </init-param>
</servlet>

具体的配置参数参见:http://code.google.com/p/kaptcha/wiki/ConfigParameters

Constant    描述    默认值
kaptcha.border    图片边框,合法值:yes , no    yes
kaptcha.border.color    边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.    black
kaptcha.border.thickness    边框厚度,合法值:>0    1
kaptcha.image.width    图片宽    200
kaptcha.image.height    图片高    50
kaptcha.producer.impl    图片实现类    com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl    文本实现类    com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string    文本集合,验证码值从此集合中获取    abcde2345678gfynmnpwx
kaptcha.textproducer.char.length    验证码长度    5
kaptcha.textproducer.font.names    字体    Arial, Courier
kaptcha.textproducer.font.size    字体大小    40px
kaptcha.textproducer.font.color    字体颜色,合法值: r,g,b  或者 white,black,blue.    black
kaptcha.textproducer.char.space    文字间隔    2
kaptcha.noise.impl    干扰实现类    com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color    干扰颜色,合法值: r,g,b 或者 white,black,blue.    black
kaptcha.obscurificator.impl    图片样式:
水纹com.google.code.kaptcha.impl.WaterRipple
鱼眼com.google.code.kaptcha.impl.FishEyeGimpy
阴影com.google.code.kaptcha.impl.ShadowGimpy
com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl    背景实现类    com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from    背景颜色渐变,开始颜色    light grey
kaptcha.background.clear.to    背景颜色渐变,结束颜色    white
kaptcha.word.impl    文字渲染器
com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key    session key    KAPTCHA_SESSION_KEY
kaptcha.session.date    session date    KAPTCHA_SESSION_DATE
 

案例代码

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--关于kaptcha验证码的配置-->
    <!-- <servlet>
         <servlet-name>Kaptcha</servlet-name>
         <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>Kaptcha</servlet-name>
         <url-pattern>/kaptcha.jpg</url-pattern>
     </servlet-mapping>-->
    <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.image.width</param-name>
            <param-value>100</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.image.height</param-name>
            <param-value>40</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.size</param-name>
            <param-value>28</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.string</param-name>
            <param-value>qwertyuiopasdfghjklzxcvbnm123456789</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.length</param-name>
            <param-value>4</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.noise.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.DefaultNoise</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.obscurificator.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.FishEyeGimpy</param-value>
        </init-param>
        <init-param>
            <!--session.setAttribute("kcode",生成好的验证吗)-->
            <param-name>kaptcha.session.key</param-name>
            <param-value>kcode</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>Kaptcha</servlet-name>
        <url-pattern>/kaptcha.jpg</url-pattern>
    </servlet-mapping>
</web-app>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Kaptcha Example</title>
</head>
<body>
<form action="submit.action">
    <input type="text" name="kaptcha" value="">
    <img src="kaptcha.jpg">
</form>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值