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 ,
- 更多JAVA疑问解答:
- java怎么在线读取ftp服务器上的文件内容
- 关于程序员的职业规划
- HTML和JSP矛盾吗?
- java小程序如何打包?
- java怎么split路径文件名?
- 关于Hibernate实体自身多对一的抓取问题
- 关于apache2+tomcat群集出现的问题
- SSH 导入导出excel 谁有这块的资料吗?
- springmvc 加载一个jsp页面执行多个方法 报404
- 关于用jquery 导入 excel
- java对时间进行循环放到List中
- 一个图片的输入输出程序,第一次调用某方法会中断,第二次调用则正常
- 请上过传智播客的人说一下传智播客怎么样呀!是不是像它说的那样好呀!
- spring的schema怎么配置
- 【菜鸟求助】SSH中怎么从JSP页面往后台传值呢