`
jobar
  • 浏览: 347256 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个Struts2验证码生成插件JCaptcha4Struts2的使用经历

阅读更多
    最近在做一个网站,涉及到用户注册时验证码生成的部分。以前也没弄过,就谷歌了一把,发现了一个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
2
3
分享到:
评论
1 楼 彭成林 2017-03-11  
我试了一下,,虽然配置这个插件简单,,但是验证码的效果真是不咋地,无法改变图片大小,识别也很困难,服务器还报各种错误,,还是不要用的好,,不知道题主说的设置图片大小的源码在哪个.class里面?

相关推荐

    Struts验证码插件 JCaptcha4Struts2

    Struts验证码插件JCaptcha4Struts2是一个用于增强Web应用程序安全性的工具,它整合了Jcaptcha库,为Struts2框架提供了强大的验证码功能。在Web应用中,验证码是一种防止恶意自动化程序(如机器人)进行非法操作的...

    基于java的Struts验证码插件 JCaptcha4Struts2.zip

    验证码插件JCaptcha4Struts2是专门为Struts2框架设计的,它集成了JCaptcha库,JCaptcha是一个开源的、基于Java的验证码生成器。JCaptcha不仅能够生成随机图像验证码,还支持音频验证码,为有视觉障碍的用户提供辅助...

    基于Java的实例源码-Struts验证码插件 JCaptcha4Struts2.zip

    Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、恶意登录等。这个插件结合了Struts2框架和JCaptcha库,为Struts2应用...

    基于Java的Struts验证码插件 JCaptcha4Struts2.zip

    首先,`JCaptcha4Struts2`依赖于`JCaptcha`库,这是一个Java实现的开源验证码生成器。`JCaptcha`提供了一种生成复杂图像验证码的方法,该验证码包含随机文本,通常需要用户在提交表单时输入以验证其为人而非机器。...

    基于Java的实例开发源码-Struts验证码插件 JCaptcha4Struts2.zip

    Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用程序的安全组件,旨在防止自动机器人或恶意用户通过表单提交不合法数据。该插件基于Java的开源项目JCaptcha(Just Another CAPTCHA)构建,提供了可视化挑战...

    java源码:Struts验证码插件 JCaptcha4Struts2.rar

    Struts验证码插件JCaptcha4Struts2是一个用于Java Web应用的安全组件,旨在防止自动机器人或恶意用户通过自动化脚本进行非法操作,如批量注册、密码重置等。该插件利用了JCaptcha(Just Another CAPTCHA)库,提供了...

    jcaptcha4struts2-demo-2.0.1.zip_DEMO_JCaptcha4Struts2.jar_jcaptc

    首先,"jcaptcha4struts2-demo-2.0.1.zip"是一个包含Jcaptcha4Struts2验证码插件示例的压缩包,版本为2.0.1。这个DEMO旨在帮助开发者快速理解和应用Jcaptcha4Struts2,为初学者提供了一个基础入门级的学习资源。 ...

    JCaptcha4Struts2快速使用指南

    JCaptcha4Struts2 是一个专门为Struts2框架集成JCaptcha验证码服务的插件。JCaptcha本身是一种强大的、可自定义的图像验证码库,旨在防止自动机器人和恶意软件对网站进行非法操作。在Struts2项目中添加JCaptcha验证...

    struts2 验证码----web界面生成几种常见的验证码

    2. **自定义验证码**:如果你不希望使用插件,你可以创建一个Action来生成图像验证码。这通常涉及到使用Java的图形库(如Java AWT或JavaFX)来绘制随机文本和图形。你需要确保生成的验证码字符串安全地存储在服务器...

    java开源包2

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包4

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包8

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包1

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包11

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包3

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    lib

    10. **jcaptcha-1.0-all.jar**:JCaptcha是一个Java实现的验证码生成库,用于防止自动机器人程序(如网络爬虫)进行恶意操作,常用于网站注册和登录过程。 这些库涵盖了Web开发的多个方面,包括框架、数据库连接、...

    java开源包6

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包5

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

    java开源包10

    Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行...

Global site tag (gtag.js) - Google Analytics