`
convertto
  • 浏览: 124924 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Struts里的Validator验证框架

阅读更多

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验证框架

    ### Struts1的Validator验证框架详解 在Java Web开发领域,Struts1作为一个经典且流行的MVC框架,提供了丰富的功能来构建动态Web应用。其中,Validator框架是Struts1用于客户端和服务端表单验证的强大工具,它能...

    Struts的Validator验证框架使用教程

    Struts的Validator验证框架是Java Web开发中常用的一个组件,主要用于处理用户输入的数据验证。它提供了强大的、可扩展的验证规则,使得开发者可以方便地在应用程序中实施数据校验,从而保证了数据的准确性和安全性...

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

    ### Struts Validator 验证框架详细讲解 #### 引言 在Java Web开发中,数据验证是确保应用程序安全性和用户体验的重要环节。Struts框架作为早期流行的MVC框架之一,提供了强大的验证机制——Struts Validator,它...

    struts validator验证框架项目

    Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据输入验证。这个项目集成了验证规则,使得开发者能够轻松地确保用户提交的数据符合预期的格式和约束,从而...

    struts 的validator框架验证

    Struts的Validator框架是Java Web开发中用于处理用户输入验证的一种强大的工具,它与MVC架构中的控制器层紧密结合,提供了一种便捷的方式来确保用户提交的数据符合预设的业务规则。这个框架大大简化了数据验证的过程...

    struts中使用validator验证框架

    Validator框架是Struts的一个重要组件,主要负责处理用户输入的数据验证,确保数据的完整性和正确性。在本文中,我们将深入探讨如何在Struts中使用Validator框架,并通过三个逐步进阶的实例来理解其工作原理。 首先...

    Struts1.3 Validator 验证框架校验Email 例子

    Struts1.3 与1.2向比验证框架部分还是有所区别的,该例子通过一个简单的Email的校验,演示如何通过Struts Validate验证框架进行在页面中生成JavaScripte脚本,进行客户端校验。下完后记得评分,资源分就会回来,还能...

    Struts validator验证框架

    Struts Validator是一个强大的验证框架,它是Apache Struts框架的一部分,用于在Java Web应用程序中实现数据验证。这个框架帮助开发者在用户提交表单时确保输入的数据是合法、完整且符合业务规则的,从而提高应用...

    struts validator验证框架例子

    Struts Validator是一个强大的验证框架,它是Apache Struts项目的一部分,专为Java Web应用程序设计,用于实现数据输入验证。Struts框架本身是一个MVC(模型-视图-控制器)架构,而Validator则是它的一个核心组件,...

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

    此外,Struts1.x的验证框架不仅限于服务器端验证,也可以结合JavaScript进行客户端验证,以提高用户体验。客户端验证可以通过在JSP页面中引入Struts的JavaScript库,然后利用`&lt;html:javascript&gt;`标签生成相应的验证...

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

    Validator框架是Struts1.x的一个重要组成部分,主要用于处理客户端和服务器端的数据验证。在这个入门例子中,我们将深入理解Validator框架的基本概念、配置以及如何在实际项目中应用。 一、Validator框架简介 ...

    struts中 validator验证实例和文档

    Validator验证在Struts应用程序中扮演着至关重要的角色,它能够确保用户输入的数据符合预设的规则,从而提高应用的健壮性和用户体验。在这个实例和文档中,我们将深入探讨Struts Validator的工作原理、配置以及如何...

    Validator验证框架

    Validator验证框架,STRUTS动态验证的规则与规范!

    struts的validator框架

    - Struts2可以与Spring框架无缝集成,此时Validator框架同样适用,Spring的`@Valid`注解可以与Struts2的验证框架一起工作。 7. **.classpath和.project文件** - `.classpath`是Eclipse项目中的配置文件,记录了...

    struts_注册验证_Validator框架

    Struts Validator框架是Apache Struts框架的一个组成部分,主要用于处理Web应用程序中的数据验证。这个框架提供了一种方便的方式来定义和执行验证规则,使得开发者能够轻松地在注册或其他表单提交过程中确保用户输入...

    struts2验证框架

    1. Validator Framework:Validator Framework 是 Struts2 验证框架的核心组件,负责对用户输入的数据进行验证。Validator Framework 提供了一个通用的验证机制,可以对用户输入的数据进行验证。 2. Validators:...

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

    Struts是Java Web开发中的一个流行MVC框架,它的核心组件之一是Validator,用于处理表单数据的验证。本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和...

    Validator验证框架.pdf

    Validator验证框架是一种强大的工具,它与Struts框架结合使用,用于实现Web应用程序中的数据验证功能。通过使用Validator框架,开发人员可以简化验证逻辑,提高代码的可维护性和重用性。本文将详细介绍Validator框架...

    一个validator的验证程序.rar_struts_validator

    Struts Validator是一个强大的验证框架,它是Apache Struts项目的一部分,用于在Java Web应用程序中执行客户端和服务器端的数据验证。这个“一个validator的验证程序.rar_struts_validator”压缩包包含了一个作者自...

    传智博客Validator框架与struts应用

    Validator框架是Java Web开发中的一种常用的表单验证框架,主要用于对JavaBean的属性进行验证。它可以将验证规则与业务逻辑分离,使得代码更加简洁、易于维护。 传统的表单验证方式 在Web开发中,经常需要对表单的...

Global site tag (gtag.js) - Google Analytics