Spring MVC 中使用 kaptcha 验证码

生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用。kaptcha所有配置都可以通过web.xml来完成,如果项目使用了Spring MVC,那么实现方式会略有不同。

一、Servlet项目

1、添加jar包依赖

maven项目,在pom.xml中添加dependency

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

非maven项目,在官网下载kaptcha的jar包,然后添加到项目lib库中。

下载地址:

2、配置web.xml

<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>

注:url-pattern 自定义

kaptcha的参数都有默认值,如果要配置kaptcha,在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>

3、jsp代码

<script type="text/javascript">
$(function(){  //生成验证码       
    $('#kaptchaImage').click(function () { 
    $(this).hide().attr('src', '/code/captcha-image?' + Math.floor(Math.random()*100) ).fadeIn(); });     
}); 
 
window.onbeforeunload = function(){ 
    //关闭窗口时自动退出 
    if(event.clientX>360&&event.clientY<0||event.altKey){   
        alert(parent.document.location); 
    } 
}; 
           
function changeCode() {  //刷新
    $('#kaptchaImage').hide().attr('src', '/code/captcha-image?' + Math.floor(Math.random()*100) ).fadeIn(); 
    event.cancelBubble=true; 

</script>
 
<div> 
  <label>验证码 </label>
  <input type="text" maxlength="4" />
  <br/>
  <img src="https://www.linuxidc.com/code/captcha-image" />     
  <a href="#">看不清?换一张</a> 
</div>

二、Spring mvc 中使用kaptcha

1、spring 配置文件 applicationContext.xml

<bean> 
        <property> 
            <bean> 
                <constructor-arg> 
                    <props> 
                        <prop key="kaptcha.border">yes</prop> 
                        <prop key="kaptcha.border.color">105,179,90</prop> 
                        <prop key="kaptcha.textproducer.font.color">blue</prop> 
                        <prop key="kaptcha.image.width">125</prop> 
                        <prop key="kaptcha.image.height">45</prop> 
                        <prop key="kaptcha.textproducer.font.size">45</prop> 
                        <prop key="kaptcha.session.key">code</prop> 
                        <prop key="kaptcha.textproducer.char.length">4</prop> 
                        <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop> 
                    </props> 
                </constructor-arg> 
            </bean> 
        </property> 
    </bean>

2、Controller的实现

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b0e84ec552a5b81addcd354d65310730.html