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

在struts中使用Validator框架

阅读更多
Validator验证框架
Validatro框架以成为Jakarta的公共项目的一部分,可以从http://jakarta.apache.org/commons/下载单独的Validator框架,在Struts中已经呆了这个框架。
Validator主要依赖两个jar包
Jakarta-oro.jar:-提供一组处理文本的类,具有文本替换、过滤、和分割功能。
Commons-validator.jar:提供了一个简单、可扩展的验证框架,包含了通用的验证方法和验证规则。

在用Struts中用这个框架,需加入这两个包,用起来感觉还不错。
下面介绍一下。
Validator采用基于两个xml文件的方式来配置验证规则,分别为validation.xml,validator-rules.xml。在struts应用中,需放到web-inf目录下。
1.validator-rules.xml
这个文件包含了一组验证规则,对所有struts应用都适用。一般情况不用修改这个文件,除非要修改或扩展默认规则。如果要给应放到另一个xml文件中,而不是直接添加到validator-rules.xml文件中,这样当Validator升级时,不用修改validator-rules.xml文件。
2.validator.xml文件
这个文件是针对于具体struts应用的,他可以为应用中的ActionForm配置验证规则。
而不用编码实现验证。
例如一个验证登陆form的例子,要求用户名必须填写,秘密要求必填、最大、最小长度
及其内容的要求。
<form-validation>
	<global>
		<!-- 密码由数字、26个英文字母或者下划线组成的字符串  -->
		<constant>
			<constant-name>pwd</constant-name>
			<onstant-value>^\w+$</onstant-value>
		</constant>
	</global>
	<formset>
		<form name="loginForm">
			<!-- 这里的用户名使用邮箱,验证时使用正则表达式进行验证 -->
			<field property="user.userId" depends="required">
				<arg0 key="user.userId" />
			</field>
			<field property="user.userPwd" depends="required,minlength,maxlength,mask">
				<!-- msg name="mask" key="errors.invalid" /-->
				<arg0 key="user.userPwd" />
				<arg1 name="minlength" key="${var:minlength}" resource="false" />
				<arg2 name="maxlength" key="${var:maxlength}" resource="false" />
				<var>
					<var-name>mask</var-name>
					<var-value>^\w+$</var-value>
				</var>
				<var>
					<var-name>minlength</var-name>
					<var-value>6</var-value>
				</var>
				<var>
					<var-name>maxlength</var-name>
					<var-value>20</var-value>
				</var>
			</field>
		</form>
	</formset>
</form-validation>

validator.xml和validator-rules.xml文件的语法不在这里说明。

3.Validator插件
为了在struts中用validator,可以用插件方式加载Validator框架,
需在struts配置文件中配置ValidatorPlugIn插件,同时写明两个xml文件的路径。
应用启动时,Strust会加载这个插件,并调用他的init()方法,init()方法根据pathnames加载相应的validator-xml,validator.xml文件,把验证信息读入到内存中。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property	value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"
			property="pathnames" />
	</plug-in>

4.Validator和ActionForm
Validator框架不能直接org.apache.struts.action.ActionForm。应采用ActionForm的两个子类
ValidatorActionForm和ValidatorForm
DynaValidatorActionFrom继续自DynaValidatorForm
支持动态在ActionFrom中使用Validator框架
ValidatorFormActionForm继承ValidatorForm
支持在标准ActionForm中使用Validator框架。

DynaValidtaorForom和ValidatorForm类都实现了validator()方法,如果验证失败,就会返回包含错误消息的ActionMessage对象,并把该对象添加到ActionErrors集合对象中,由validator方法最后返回ActionErrors对象。
ValidatorForm有一个子类ValidatorActionForm
ValidatorForm
Strust配置文件的<action>元素的name属------>validator.xml文件<form>元素的name属性
ValidatorActionForm
Strust配置文件的<action>元素的path属------>validator.xml文件<form>元素的name属性
Validator框架提供这两个类目的在于可以更加精确的控制执行验证的条件。
例如
loginForm表单对应两个验证规则A、B。对应login、cancel两个动作。
如果对于这两个动作都要执行规则A、B。则可以扩展一个ValidatorFom类loginForm
然后配置
<formset>
<form name=”loginForm”>
	验证规则A
	验证规则B
.</form>
….
</formset>

如果对于用户的login动作,执行规则A。对于cancel动作执行B规则。则可以扩展一个ValidatorActionFom类loginForm
然后配置
<formset>
<form name=”login”>
	验证规则A
.</form>
<form name=”cancel”>
	验证规则B
.</form> 
</formset>

而DynaValidatorForm和DynaValidatorActionForm,区别和ValidatorFrom和ValidatorActionForm的区别一样

5.在validator框架中使用JavaScript
默认情况下,validator框架在服务器端执行表单验证。也可以在客户端验证。
如果在客户端验证,需要使用struts的<html:javascript>标签,他能在jsp页面中生成用于客户端验证的JavaScript的脚本。
1) 在validator-rules.xml文件的<validator>元素中配置<javascript>元素
默认struts框架的validator-rules.xml文件已经包含了javascript子元素。
也可以将这些javascript集中放到一个validator.js的文件中,也页面中引入
<script language="Javascript1.1" src="js/validator.js"></script>

2) 在Jsp页面中包含<html:javascript>
<html:javascript formName=”loginForm”> 这个标签的form的name属性制定需要验证的表单名字,他能够访问为表单配置的验证规则的javascript元素,把包含的脚本写到jsp页面中
,生成validateLoginForm的函数,负责执行验证逻辑
3) 对需要验证的表单定义onsubmit事件
4)
<html:form action="manageContract.do" onsubmit="return validateContractForm(this);">

5) 用户在表单上提交后,就会调用<html:javascript>
标签生成的js脚本validateLoginForm函数,执行验证。如果验证失败,就会弹出对话框提示,不会提交的服务器端。

小结
使用步骤
1) 创建扩展ValidatorForm或ValidatorActionForm类的ActionForm,如果使用动态ActionForm,则不用扩展DynaValidatorForm或DynaValidatorActionForm类的子类,可以直接进行第二步
2) 在struts文件中配置form和action元素
3) 把validator框架使用的文本信息添加到应用的Resource Bundle中
4)
<message-resources parameter="com.web.ApplicationResources" />

5) 在validatorxml文件中为表单配置验证规则
6) 在struts配置文件中配置validatorPlugIn插件
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
		<set-property value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" property="pathnames" />	</plug-in>


参考书:孙卫琴的精通struts
分享到:
评论

相关推荐

    struts中使用validator验证框架

    在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先,我们来看第一个实例——Validator_Struct_01。在这个基础案例中,我们将了解如何设置基本的...

    Struts1的validator验证框架

    ### Struts1的Validator验证框架详解 ...然而,随着技术的发展,现代Web应用可能更倾向于使用Spring MVC、AngularJS等新兴框架,但Struts1的Validator框架依然有其不可替代的价值,特别是在遗留系统维护和优化方面。

    struts 的validator框架验证

    在使用Validator框架之前,你需要在项目的配置文件中声明Validator的规则。这些规则通常写在`validation.xml`文件中,该文件定义了每个表单字段的验证规则,如非空检查、长度限制、数据类型检查等。例如,如果你有一...

    struts1.x validator框架验证入门例子

    在这个入门例子中,你可以创建一个简单的表单,使用Struts1.x的Validator框架进行验证。首先创建表单HTML页面,然后编写对应的ValidatorForm和Action,最后配置struts-config.xml和ValidatorRule.xml。运行项目,...

    struts validator验证框架项目

    在Struts Validator框架中,验证规则通常定义在`validation.xml`配置文件中。这些规则包括字段名、验证规则类型(如长度、正则表达式等)和错误消息。例如,描述中的"用户名满足6位以上"可以通过以下配置实现: ``...

    Struts的Validator验证框架使用教程

    在使用Struts Validator框架之前,你需要配置相应的XML文件。主要有两部分:`validation.xml`和`struts-config.xml`。 1. `validation.xml`:这个文件定义了验证规则,包括每个字段的验证约束。例如,你可以指定...

    struts验证器validator使用,以及自定义验证器

    总的来说,Struts验证器Validator是Struts框架中处理表单验证的重要组件,通过合理的配置和自定义扩展,可以实现强大的数据验证功能。在Eclipse和Maven的帮助下,开发和调试过程更加高效便捷。StrutsValidationDemo...

    struts1.x使用common-validator验证框架

    在Struts1.x中使用Common-Validator框架,你需要遵循以下步骤: 1. **引入依赖**:首先,你需要在项目的类路径下添加Common-Validator的jar包,通常这会是`commons-validator.jar`和`commons-digester.jar`。这些库...

    03_张孝祥09年Struts视频_validator单元3.rar

    在Struts框架中,Validator的作用至关重要,它提供了强大的表单验证功能,能够确保从用户那里接收到的数据符合预设的规则。Validator框架允许开发者定义一套验证规则,并在用户提交表单时自动执行这些规则,从而减少...

    struts的validator框架

    Struts的Validator框架是Java Web开发中用于进行数据验证的重要工具,它基于Apache Struts框架,为MVC(Model-View-Controller)架构提供了一种强大的验证机制。Validator框架允许开发者定义验证规则,并在用户提交...

    struts_注册验证_Validator框架

    总的来说,Struts Validator框架通过提供一个结构化的验证方法,简化了在Web应用程序中进行数据验证的复杂性,特别是在处理注册等需要严格输入检查的场景。通过学习这个主题,开发者可以更好地理解如何利用Struts的...

    validator框架的应用

    `Validator框架`是Java开发中用于数据验证的重要工具,尤其在基于Struts的Web应用程序中,它扮演着不可或缺的角色。Struts是一个流行的MVC(Model-View-Controller)框架,帮助开发者构建健壮且可维护的Java Web应用...

    Struts Validator验证框架详细讲解.txt

    通过在JSP页面中使用特定的标签,可以生成JavaScript代码,实现在数据提交前的即时验证,提高用户体验。 #### 结语 Struts Validator作为Struts框架的强大组件,不仅简化了数据验证的实现,而且增强了应用程序的...

    IBM 的 Struts validator框架

    Struts Validator框架是Apache Struts框架的一个重要组成部分,由IBM公司提供支持,它主要用于Web应用程序中的数据验证。这个框架提供了一种结构化的方式来定义和执行客户端及服务器端的数据验证规则,确保用户输入...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

    Struts2 使用Validation框架验证数据(三十七)

    Struts2还可以与Hibernate Validator框架集成,利用其丰富的验证注解和更强大的验证功能。只需添加相应的依赖,并在配置中启用,即可在Struts2中使用Hibernate Validator的全部功能。 八、WebRoot目录和src目录 在...

    struts validator框架以及filter 乱码

    Struts Validator框架是Apache Struts框架的一个重要组成部分,主要用于处理Web表单验证。它提供了一种声明式的...在`Strutsvalidator`压缩包文件中,你应该能够找到相关的示例代码,帮助你更好地理解和应用这些概念。

    struts validator验证框架例子

    4. **Interceptor**:在Struts2中,Validator框架通过拦截器(Interceptor)机制实现数据验证。当请求到达Action时,验证拦截器会先执行,如果验证失败,请求将不会继续到Action,而是直接返回到错误页面。 **错误...

    struts1.3实现的Validator简单验证

    Validator是Struts框架中的一个关键组件,用于处理用户输入验证,确保数据的有效性和一致性。在Struts1.3中,Validator功能得到了进一步的增强和优化,相比Struts1.2,它引入了一些新的特性和改进。 在Struts1.3中...

Global site tag (gtag.js) - Google Analytics