Validator框架概述
安装和配置Validator框架
validator-rules.xml文件
validation.xml文件
Validator插件
Validator框架和ActionForm
Validator框架示例
在Validator框架中使用JavaScript
Validator框架概述
Struts框架能够在ActionForm的validate()方法中对用户输入的表单数据进行验证。这种验证方式有两个局限:
必须通过程序代码来实现验证逻辑,如果验证逻辑发生变化,必须重新编写和编译程序代码。
当系统中有多个ActionForm,并且它们包含一些相同的验证逻辑时,开发人员必须对每个ActionForm进行重复编程,完成相同的验证逻辑,这会降低代码的可重用性。
Validator框架能被集成到Struts框架中,负责数据验证。并且能克服在ActionForm中以编程方式进行数据验证的局限,它允许Struts应用灵活的配置验证规则,无需编程。
如今,Validator框架在Struts应用中得到了广泛的运用,Apache组织已经把它添加到Jakarta工程中,在Struts软件中携带了Validator框架。
安装和配置Validator框架
Validator框架主要依赖于两个JAR文件:
jakarta-oro.jar
提供了一组处理文本的类,具有文本替换、过滤和分割等功能。
commons-validator.jar
提供了一个简单、可扩展的验证框架,包含了通用的验证方法和验证规则。
如果在Struts应用中使用了Validator框架,那么把这两个JAR文件添加到应用的WEB-INF/lib目录中。
Validator框架采用两个基于XML的配置文件来配置验证规则。这两个文件为validator-rules.xml和validation.xml。在Struts应用,它们均存放在WEB-INF目录下。
validator-rules.xml文件
validator-rules.xml文件包含了一组通用的验证规则,对所有的Struts应用都适用。Struts软件中携带了这个文件。一般情况下,没有必要修改该文件,除非需要修改或扩展默认的规则。
Validator框架提供了14种默认的验证规则:
byte、short、integer、long、float、double:检验输入的数据是否能被转换成对应的基本数据类型
creditCard:检验输入的数据是否是一个合法的信用卡号码
date:检验输入的数据是否是一个合法日期
email:检验输入的数据是否是一个合法Email地址
mask:检验输入的数据是否能成功匹配一个正则表达式
maxLength:检验输入的数据的长度是否小于等于给定的最大长度
minLength:检验输入的数据的长度是否大于等于给定的最小长度
range:检验输入的数据的范围是否在最大值和最小值之间
required:检验输入数据是否为空,或不包含空格值的长度是否大于零
validation.xml文件
Validator框架的第二个配置文件为validation.xml文件。这个文件是针对于某个具体Struts应用的,需要开发人员来创建,它可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
元 素 说 明
<form-validation> 根元素,它包含两个子元素<global>与<formset>
<global> 包含多个<constant>子元素
<constant> 用来定义常量表达式,其中<constant-name>元素指定常量名, <constant-value>元素指定对应的表达式
<formset> 包含两个子元素<constant>与<form>
<form name=""> 为表单配置验证规则,可以包含多个<field>子元素
<field property="" depends=""> 配置表单中字段的验证规则
<arg name="" key="" resource=""> <field>元素的子元素,用于替换复合消息中的参数
<msg name="" key="" resource=""> <field>元素的子元素,指定验证规则对应的消息文本
<var><var-name><var-value></var> <field>元素的子元素,用来向验证规则传递参数
Validator插件
为了在Struts框架中使用Validator,可以采用插件机制把Validator加入到框架中。这需要在Struts配置文件中配置ValidatorPlugIn插件。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
Validator框架和ActionForm
Validator框架不能用于验证标准的ActionForm类,如果要使用Validator框架,应该采用ActionForm类的子类。
ValidatorForm
DynaValidatorForm
ValidatorActionForm
DynaValidatorActionForm
举例:
ActionForm
package form;
import org.apache.struts.validator.ValidatorForm;
public class UserForm extends ValidatorForm {
private String id;
private String name;
private String pwd;
private String birthday;
private Integer age;
private String email;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
……
}
Action
package action;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import form.UserForm;
public class UserAction extends Action {
public ActionForward execute(......) {
UserForm userForm = (UserForm) form;
return mapping.findForward("output");
}
}
JSP
user.jsp
<html:form action="/user">
id : <html:text property="id"/><html:errors property="id"/><br/>
name : <html:text property="name"/><html:errors property="name"/><br/>
pwd : <html:password property="pwd"/><html:errors property="pwd"/><br/>
birthday : <html:text property="birthday"/>
<html:errors property="birthday"/><br/>
age : <html:text property="age"/><html:errors property="age"/><br/>
email : <html:text property="email"/><html:errors property="email"/><br/>
<html:submit/><html:reset/>
</html:form>
output.jsp
id : <bean:write name="userForm" property="id"/><br/>
name : <bean:write name="userForm" property="name"/><br/>
pwd : <bean:write name="userForm" property="pwd"/><br/>
birthday : <bean:write name="userForm" property="birthday"/><br/>
age : <bean:write name="userForm" property="age"/><br/>
email : <bean:write name="userForm" property="email"/><br/>
struts-config.xml
<struts-config>
<form-beans >
<form-bean name="userForm" type="form.UserForm" />
</form-beans>
<action-mappings >
<action attribute="userForm" input="/user.jsp" name="userForm"
path="/user" scope="request" type="action.UserAction">
<forward name="output" path="/output.jsp" />
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />
</plug-in>
</struts-config>
ApplicationResources.properties
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
validator-rules.xml
<form-validation>
<global>
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
......
</global>
</form-validation>
validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="userForm">
<field property="id" depends="required,mask"/>
<field property="name" depends="required"/>
<field property="pwd" depends="required,minlength,maxlength"/>
<field property="birthday" depends="required,date"/>
<field property="age" depends="required,intRange"/>
<field property="email" depends="required,email"/>
</form>
</formset>
</form-validation>
<field property="id" depends="required,mask"/>
<!-- 配置表单中字段的验证规则 -->
<field property="id" depends="required,mask">
<!-- 用于替换复合消息中的参数 -->
<arg key="id" resource="false" />
<!-- 指定验证规则对应的消息文本 -->
<msg name="mask" key="id is error [B001]" resource="false" />
<!-- 用来向验证规则传递参数 -->
<var>
<var-name>mask</var-name>
<var-value>^[B]{1}[0-9]{3}$</var-value>
</var>
</field>
<field property="name" depends="required"/>
<field property="name" depends="required">
<arg key="name" resource="false" />
</field>
<field property="pwd" depends="required,minlength,maxlength"/>
<field property="pwd" depends="required,minlength,maxlength">
<arg0 key="pwd" resource="false" />
<arg1 name="minlength" key="${var:minlength}" resource="false" />
<arg1 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>4</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
<field property="birthday" depends="required,date"/>
<field property="birthday" depends="required,date">
<arg key="birthday" resource="false" />
</field>
<field property="age" depends="required,intRange"/>
<field property="age" depends="required,intRange">
<arg key="age" resource="false" />
<arg name="intRange" key="age" resource="false" />
<arg1 name="intRange" key="${var:min}" resource="false" />
<arg2 name="intRange" key="${var:max}" resource="false" />
<var>
<var-name>min</var-name>
<var-value>1</var-value>
</var>
<var>
<var-name>max</var-name>
<var-value>100</var-value>
</var>
</field>
<field property="email" depends="required,email"/>
<field property="email" depends="required,email">
<arg key="email" resource="false" />
</field>
在Validator框架中使用JavaScript
在默认情况下,Validaor框架在Web服务器端执行表单验证,事实上,Validator框架也可以进行浏览器客户端验证。
<html:javascript formName="userForm"/>
<html:form action="/user" onsubmit="return validateUserForm(this);">
分享到:
相关推荐
### Struts1的Validator验证框架详解 在Java Web开发领域,Struts1作为一个经典且流行的MVC框架,提供了丰富的功能来构建动态Web应用。其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能...
Struts的Validator验证框架是Java Web开发中常用的一个组件,主要用于处理用户输入的数据验证。它提供了强大的、可扩展的验证规则,使得开发者可以方便地在应用程序中实施数据校验,从而保证了数据的准确性和安全性...
### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...
Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据输入验证。这个项目集成了验证规则,使得开发者能够轻松地确保用户提交的数据符合预期的格式和约束,从而...
Struts的Validator框架是Java Web开发中用于处理用户输入验证的一种强大的工具,它与MVC架构中的控制器层紧密结合,提供了一种便捷的方式来确保用户提交的数据符合预设的业务规则。这个框架大大简化了数据验证的过程...
Validator框架是Struts的一个重要组件,主要负责处理用户输入的数据验证,确保数据的完整性和正确性。在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先...
Struts1.3 与1.2向比验证框架部分还是有所区别的,该例子通过一个简单的Email的校验,演示如何通过Struts Validate验证框架进行在页面中生成JavaScripte脚本,进行客户端校验。下完后记得评分,资源分就会回来,还能...
Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据验证。这个框架帮助开发者在用户提交表单时确保输入的数据是合法、完整且符合业务规则的,从而提高应用...
Struts Validator是一个强大的验证框架,它是Apache Struts项目的一部分,专为Java Web应用程序设计,用于实现数据输入验证。Struts框架本身是一个MVC(模型-视图-控制器)架构,而Validator则是它的一个核心组件,...
此外,Struts1.x的验证框架不仅限于服务器端验证,也可以结合JavaScript进行客户端验证,以提高用户体验。客户端验证可以通过在JSP页面中引入Struts的JavaScript库,然后利用`<html:javascript>`标签生成相应的验证...
Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,我们将深入理解Validator框架的基本概念、配置以及如何在实际项目中应用。 一、Validator框架简介 ...
Validator验证在Struts应用程序中扮演着至关重要的角色,它能够确保用户输入的数据符合预设的规则,从而提高应用的健壮性和用户体验。在这个实例和文档中,我们将深入探讨Struts Validator的工作原理、配置以及如何...
Validator验证框架,STRUTS动态验证的规则与规范!
- Struts2可以与Spring框架无缝集成,此时Validator框架同样适用,Spring的`@Valid`注解可以与Struts2的验证框架一起工作。 7. **.classpath和.project文件** - `.classpath`是Eclipse项目中的配置文件,记录了...
Struts Validator框架是Apache Struts框架的一个组成部分,主要用于处理Web应用程序中的数据验证。这个框架提供了一种方便的方式来定义和执行验证规则,使得开发者能够轻松地在注册或其他表单提交过程中确保用户输入...
1. Validator Framework:Validator Framework 是 Struts2 验证框架的核心组件,负责对用户输入的数据进行验证。Validator Framework 提供了一个通用的验证机制,可以对用户输入的数据进行验证。 2. Validators:...
Struts是Java Web开发中的一个流行MVC框架,它的核心组件之一是Validator,用于处理表单数据的验证。本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和...
Validator验证框架是一种强大的工具,它与Struts框架结合使用,用于实现Web应用程序中的数据验证功能。通过使用Validator框架,开发人员可以简化验证逻辑,提高代码的可维护性和重用性。本文将详细介绍Validator框架...
Struts Validator是一个强大的验证框架,它是Apache Struts项目的一部分,用于在Java Web应用程序中执行客户端和服务器端的数据验证。这个“一个validator的验证程序.rar_struts_validator”压缩包包含了一个作者自...
Validator框架是Java Web开发中的一种常用的表单验证框架,主要用于对JavaBean的属性进行验证。它可以将验证规则与业务逻辑分离,使得代码更加简洁、易于维护。 传统的表单验证方式 在Web开发中,经常需要对表单的...