当前位置:编程学习 > JAVA >>

Struts2整合Jcaptcha1.0实现异步验证码

验证码的英文CAPTCHA 这个词最早是在2000年由卡内基梅隆大学的Luis von Ahn、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。CAPTCHA 是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
----引自"百度百科"
首先,从sourceforge网站下载 Download jcaptcha-1.0-bin.zip (9.2 MB) 
jCaptcha官方网站是 https://jcaptcha.atlassian.net/wiki/display/general/Home
如果机上装有SVN客户端,还可以下载源代码,SVN地址是: 
https://jcaptcha.svn.sourceforge.net/svnroot/jcaptcha
以上地址从SVN上checkout出整个jcaptcha项目(包括trunk,tags,branch等)100多M,网速慢的比较耗时,建议先浏览仓库,checkout一个tags标签版本即可
当然,如果机上又装mvn,那就可以打包成源代码的jar文件了,方便我们学习,mvn命令是:  mvn source:jar
 
确定环境中包含下列依赖:
其中 jcaptcha依赖于 commons-logging和commons-collections
集成struts2依赖于jcaptcha4struts2
strut2-sitemesh和sitemesh已本博文无关
 
1,查看jcaptcha4struts2插件配置struts-plugin.xml
[html]  
<struts>  
  
  
    <include file="struts-default.xml" />  
  
    <package name="jcaptcha4struts2-default" extends="struts-default">  
  
        <result-types>  
            <result-type name="captchaImage"  
                class="com.google.code.jcaptcha4struts2.core.actions.support.CaptchaImageResult" />  
        </result-types>  
  
        <interceptors>  
            <interceptor name="jcaptchaValidation"  
                class="com.google.code.jcaptcha4struts2.core.interceptors.JCaptchaValidationIntercepter" />  
            <interceptor-stack name="jcaptchaDefaultStack">  
                <interceptor-ref name="defaultStack" />  
                <interceptor-ref name="jcaptchaValidation" />  
            </interceptor-stack>  
        </interceptors>  
  
        <action name="jcaptcha_image"  
            class="com.google.code.jcaptcha4struts2.core.actions.JCaptchaImageAction">  
            <result type="captchaImage" />  
        </action>  
  
    </package>  
  
</struts>  
 
 
2.单纯使用内置的验证码功能
如果单纯使用jcaptcha4struts2插件提供的验证功能,仅需在页面包含一个<img src=''jcaptcha_image.action" />图片元素就能拿到验证码图片了
而提交表单的时候,要对验证码进行验证,仅需在表单的action中添加jcaptchaValidation拦截器即可
 
例:index.jsp
 
[html] 
[...]  
<script type="text/javascript">  
    function changeImage() {  
        var jcaptcha_image = document.getElementById("jcaptcha_image");  
        var timestamp = new Date().getTime();  
        jcaptcha_image.src = "ajax_captcha.action?timestamp=" + timestamp;  
        var jcaptcha_input = document.getElementById("txtVerifyCode");  
        jcaptcha_input.value = "";  
        jcaptcha_input.focus();  
    }  
</script>  
</head>  
  
<body>  
    <div class="form">  
        <form id="register" name="register" method="post"  
            action="user/register">  
            [...]  
            <table width="800px" style="border-collapse:collapse">  
                [...]  
                <tr>  
                    <td class="label"><label for="verify_code">验证码:</label>  
                    </td>  
                    <td class="field">  
                        <div class="jcaptcha_image">  
                            <!-- 验证码 -->  
                            <img id="jcaptcha_image"  
                                src="jcaptcha_image.action" />  
                        </div>  
                        <!-- 验证码输入框 -->   
                        <input name="jCaptchaResponse"  
                                type="text" id="txtVerifyCode" class="yzm_input clear-fix" />  
                        <div class="text_left">  
                            <p class="t1">  
                                <span id="vcodeValidMsg">请输入图片中的七个字母。</span>  
                                <span id="number.info" style="color:red"></span>  
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,