最近在做一个网站,涉及到用户注册时验证码生成的部分。以前也没弄过,就谷歌了一把,发现了一个Struts2的验证码生成插件。网址是:
http://code.google.com/p/jcaptcha4struts2/。
按照开发指导步骤完成了相应的配置,用这个东西还是比较方便的。但是在使用过程中也碰到了不少的问题,现在与大家分享一下,以免走弯路。
1、首先是配置的问题。
依赖的包首先是Struts的jar包了,这里就不多说了。
另外当然是这个插件包:可以从网站上下载jcaptcha4struts\jcaptcha4struts2-2.0.2.jar
还有这两个包jcaptcha-1.0-all.jar跟imaging-01012005.jar
QuickStart:
http://code.google.com/p/jcaptcha4struts2/wiki/QuickStart上面说了两种使用方式。我这里采用的是拦截器第二种方式
2、页面校验码生成问题。
配置如下:
<div align="left" class="verifycode">验 证 码:
<jcaptcha:image label="" width="88" height="21" /><div class="errtext2"><span class="myerror"><s:fielderror cssClass="myerror" fieldName="jCaptchaResponse"/></span></div>
</div>
配置好之后,在页面里面居然没有生成验证码的图片。看来的研究下这个验证码图片是如何生成的了。。图片的生成是通过JCaptchaImageAction来做到的,里面有这么个方法。依赖
protected ImageCaptchaService getImageCaptchaService() {
return JC4S2Config.getInstance().getImageCaptchaService();
}
依赖的是
JC4S2Config.getDefaultImageCaptchaService(){
。。。
Class<?> clazz = Class.forName(DEFAULT_IMG_CAPTCHA_IMPL);
return (ImageCaptchaService) clazz.newInstance();
。。。
}
在实例化具体的com.octo.captcha.service.image.DefaultManageableImageCaptchaService对象时候,出错了。发现还需要依赖commons-collections-3.2.1.jar包。嗯把这个包加上去就可以了
生成之后发现图片太大,把其他的元素都挤到一边去了,这个好办,发现jcaptcha:image里面有属性,高度跟宽度。。设置相应的高度和宽度就可以了。然而杯具发生了
,设置高度跟宽度不管用。看下面的代码(这个可以项目的源代码,没想到会出现这样的bug,然而到现在也没纠正过来)
public Component getBean(ValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
JCaptchaImage bean = new JCaptchaImage(stack, request, response);
// Set attribute values
bean.setWidth(width);
bean.setWidth(height);//这里我想作者本来的意思是设置高度的,没想到设置了两次宽度
bean.setTextSize(textSize);
return bean;
}
没办法这个只好通过css解决了。
3、生成的图片不好辨认。。
如图所示,是我调整好一切之后在界面上的展示,但是缺点是生成的图片太不好辨认了。。
这一点比较郁闷。。
总结:这个插件还有不少的问题有待改进。比如高度不能调整。生成的图片不好辨认等问题。另外拦截器没有得到调用,暂时还不知道是什么原因,有待进一步研究。
拦截器没有调用成功,发现是配置的问题,按照指导原文的配置是有问题的,如下:
Following code snippet from struts.xml shows how this is done.
<package name="mypackage" extends="jcaptcha4struts2-default">
<action name="myformaction" class="com.my.app.FormAction">
<!-- Interceptor Stack -->
<interceptor-ref name="jcaptchaDefaultStack" />
<result name="input">/form.jsp</result>
<result>/done.jsp</result>
</action>
</package>
应该这样配置:
<action name="register" class="com.zhaozh.actions.RegisterAction">
<!-- <interceptor-ref name="jcaptchaDefaultStack"></interceptor-ref> -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="jcaptchaValidation"></interceptor-ref>
<result name="success">/index.jsp</result>
<result name="input">/register.jsp</result>
</action>
4、自定义拦截器,复写父类的方法:
复写是为了中文网页的需求,复写父类的方法,返回中文的提示
public class VerifyCodeInterceptor extends JCaptchaValidationIntercepter {
/**
*
*/
private static final long serialVersionUID = -5166016815535509471L;
@Override
protected String getValidationErrorMessage() {
return "输入的字符串跟图片上的字符串不匹配";
}
}
配置:
<interceptors>
<interceptor name="verifycode"
class="com.zhaozh.intercepter.VerifyCodeInterceptor"></interceptor>
</interceptors>
<action name="register" class="com.zhaozh.actions.RegisterAction">
<!-- <interceptor-ref name="jcaptchaDefaultStack"></interceptor-ref> -->
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="verifycode"></interceptor-ref>
<result name="success">/index.jsp</result>
<result name="input">/register.jsp</result>
</action>
- 大小: 4.9 KB
分享到:
相关推荐
Struts验证码插件JCaptcha4Struts2是一个用于增强Web应用程序安全性的工具,它整合了Jcaptcha库,为Struts2框架提供了强大的验证码功能。在Web应用中,验证码是一种防止恶意自动化程序(如机器人)进行非法操作的...
验证码插件JCaptcha4Struts2是专门为Struts2框架设计的,它集成了JCaptcha库,JCaptcha是一个开源的、基于Java的验证码生成器。JCaptcha不仅能够生成随机图像验证码,还支持音频验证码,为有视觉障碍的用户提供辅助...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、恶意登录等。这个插件结合了Struts2框架和JCaptcha库,为Struts2应用...
首先,`JCaptcha4Struts2`依赖于`JCaptcha`库,这是一个Java实现的开源验证码生成器。`JCaptcha`提供了一种生成复杂图像验证码的方法,该验证码包含随机文本,通常需要用户在提交表单时输入以验证其为人而非机器。...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用程序的安全组件,旨在防止自动机器人或恶意用户通过表单提交不合法数据。该插件基于Java的开源项目JCaptcha(Just Another CAPTCHA)构建,提供了可视化挑战...
Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、密码重置等。该插件利用了JCaptcha(Just Another CAPTCHA)库,提供了...
首先,"jcaptcha4struts2-demo-2.0.1.zip"是一个包含Jcaptcha4Struts2验证码插件示例的压缩包,版本为2.0.1。这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 ...
JCaptcha4Struts2 是一个专门为Struts2框架集成JCaptcha验证码服务的插件。JCaptcha本身是一种强大的、可自定义的图像验证码库,旨在防止自动机器人和恶意软件对网站进行非法操作。在Struts2项目中添加JCaptcha验证...
2. **自定义验证码**:如果你不希望使用插件,你可以创建一个Action来生成图像验证码。这通常涉及到使用Java的图形库(如Java AWT或JavaFX)来绘制随机文本和图形。你需要确保生成的验证码字符串安全地存储在服务器...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
10. **jcaptcha-1.0-all.jar**:JCaptcha是一个Java实现的验证码生成库,用于防止自动机器人程序(如网络爬虫)进行恶意操作,常用于网站注册和登录过程。 这些库涵盖了Web开发的多个方面,包括框架、数据库连接、...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...
Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行...