`
反求诸己
  • 浏览: 543221 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

struts1 validator验证框架

阅读更多
struts1 validator验证框架

MyEclipse

本文以一登录页面(Login.jsp)为例,讲叙我在JBuilder 2005中如果使用Validator框架来对输入的数据进行验证。
   在用户进行主页面前需要进行身份验证,此页面的验证规则为用户名和密码均不能为空,且密码的长度必须大于等于6个字符。

为了达到以上所说的目的,在Struts中有两种办法:
        1.使用ActionForm Bean中的Validate()函数实现,将需要验证的逻辑写入该函数,即在提交表单时会对其进行验证,这中方法的缺点在于必须通过程序代码来实现验证逻辑,如果验证逻辑发生改变,则必重新编写和编译程序代码,此外如果程序中多个ActionFrom Bean共用相同的验证逻辑,则必须重复编程,降低代码的重用性。
        2.使用Validator验证框架实现,它能够克服以上所说的局限,此外它的配置灵活,无需编程。

  Validator框架采用两个基于XML的配置文件来配置验证规则,这两个文件为validator-rules.xml和validation.xml,在Struts应用中,这两个文件必须存放在WEB-INF目录下。

  下面从页面开始讲述如果创建此登录验证页面。
Login.jsp页面的关键代码如下:
        <tr>
          <td width="70" class="TableText">用户名:</td>
          <td>
            <html:text property="userName" style="TextBoxLong">    </html:text>
           <html:errors property="userName" />
          </td>
        </tr>
        <tr>
          <td class="TableText">密 码:</td>
          <td>
            <html:password property="password" style="TextBoxLong">   </html:password>
           <html:errors property="password"/>
          </td>
         </tr>
  说明:
        1.用户名文本框的属性名称为userName,对应其ActionFrom中的userName,接下来为显示错误的Struts标签,其属性名称与文本框同名,意为只显示文本框的错误信息,如果没有property,则显示所有错误信息,此标签的作用是一但用户名文本框有错误则通过其进行显示。
        2.密码框与用户名文本框基本类似,在此不再叙述。

Login页面创建完成后,即需要创建ActionFrom Bean,名称为LoginActionForm
        import javax.servlet.http.*;
        import org.apache.struts.action.*;
        import org.apache.struts.validator.*;

        public class LoginActionForm extends ValidatorForm {
            private String password;
            private String userName;
            private Integer id;
            public String getPassword() {
                return password;
            }

            public void setPassword(String password) {
                this.password = password;
            }

            public void setUserName(String userName) {
                this.userName = userName;
            }

           public void setId(Integer id) {
                this.id = id;
            }

            public String getUserName() {
                return userName;
            }

            public Integer getId() {
                return id;
            }

           public void reset(ActionMapping actionMapping,
                              HttpServletRequest servletRequest) {
                password = null;
                userName = null;
            }
        }
  说明:
        1.此处的LoginActionForm必须继承自ValidatorForm,而不是ActionForm,原因在于ActionForm不能使用Validator框架完成验证。
        2.此LoginActionForm中必须包含有Login.jsp页面中<html:text/>和<html:password/>标签propety属性所指定的属性字段名,即userName和password.
        3.除以上所说外,该LoginActionForm就是一个JavaBean类。

定义Action--LoginAction
  此Action与普通的Action并无任何区别,均是完成相应的后台逻辑功能,此页面则是读取数据库中的数据与输入的相比较,匹配则转向主页面,否则转向错误页面,具体实现在此就不叙述了。


创建validator-rules.xml文件,制定验证规则
        <!DOCTYPE form-validation PUBLIC
                  "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
                  "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd ">

        <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,
                       javax.servlet.http.HttpServletRequest"
                   msg="errors.required">
              </validator>
         
              <validator name="minlength"
                  classname="org.apache.struts.validator.FieldChecks"
                  method="validateMinLength"
                  methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.minlength">
                 depends="required"
            </validator>
           </global>
        </form-validation>
  说明:
        1.每个<validator>元素定义了一个惟一的验证规则,此处一共定义了两个验证规则:名为required的规则和名为minlength的规则。
        2.<validator>元素的name属性指定验证规则的逻辑名,此名字必须惟一;classname和method属性分别指定实现验证规则逻辑的类和方法;methodParams属性用来指定验证方法包含的参数,多个参数之间用逗号隔开;msg属性指定来自于Resource Bundle中的消息key,此程序的Resource Bundle为ApplicationResources.properties文件,当验证失败时,Validator框架将根据这个消息key到Resource Bundle中查找匹配的消息文本,默认情况下,Validator框架有一组定义的消息文本,参见下文“定义Resource Bundle消息文件”,此处的消息也可以自定义,而不使用其默认消息。
        3.除上述的属性外,<validator>还有一个depends属性,用于指定在调用当前验证规则之前必须先调用的其他验证规则,例如上面代码中在调用minlength验证前需先调用required验证规则。如果depends包含多个验证,使用逗号分隔,如depends="required, maxlength",需注意的是如果调用depends规则时验证失败,则不会调用下一个验证规则。
        4.下面给出FieldChecks类包含的验证方法,即method后可以写的方法(上面代码中蓝色显示),此外,可以自定义方法。
                validateByte、validateCreditCard、validateDate、validateDouble、validateEmail、validateFloat、validateInteger、validateLong、validateMask、validateMinLength、validateMaxLength、validateRange、validateRquired、validateShort。

创建validation.xml文件,此文件可以为应用中的ActionForm配置所需的验证规则,取代在ActionForm类中以编程的方式来实现验证逻辑。
        <?xml version="1.0" encoding="ISO-8859-1" ?>
        <!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd ">
        <form-validation>
          <formset language="zh_CN">
            <form name="LoginActionForm">
              <field property="userName" depends="required">
                <arg0 name="required" key="User.name" resource="true"/> ==> <msg name="required" key="user.required" resource="true"/>
              </field>
              <field property="password" depends="required,minlength">
                <arg0 key="password.name" />
                <arg1 name="minlength" key="${var:minlength}"/>
                <var>
                  <var-name>minlength</var-name>
                  <var-value>6</var-value>
                </var>
              </field>
            </form>
          </formset>
        </form-validation>
  说明:
        1.<form>元素用于为表单配置验证规则,它的name属性为需要验证的ActionForm的名称,它需要与struts-config.xml中的名称一致,如此处为LoginActionForm.
        2.<field>元素用于为表单字段配置验证规则,它的property属性名称需要与Login.jsp页面中的用户名文本框和密码框的property属性名一致。
        3.<depends>元素为该字段所采用的验证规则有哪些,如果有多个,则使用逗号分隔。
        4.参看以上<msg>一行,<msg>元素指定验证规则对应的消息文本,该消息文本将替代在validator-rules.xml文件中为验证规则配置的默认消息文本。意思即是说,如果上面使用的是<msg name="required" key="user.required" resource="true"/>,而非<arg0 name="required" key="User.name" resource="true"/>,则如果验证失败,验证规则将使用msg中key指定的消息,而非默认的errors.required消息(validator-rules.xml中定义,参看上文)。
        5.<field>字段可以包含四个附加的子元素,<arg0>、<arg1>、<arg2>、<arg3>,用于替换复合消息中的参数,<arg0>指定第一个替换值,<arg1>指定第二个,依此类推。每个arg元素包含三个属性:name,key和resource,用法与<msg>相似。如上代码中<arg0 name="required" key="User.name" resource="true"/>意为使用从消息文件ApplicationResources.properties中消息key User.name取出的文本(Username)来替换默许消息文本errors.required中的参数,使之组合成一句有意思的文本,errors.required的原文本为:{0}is requuired.

向struts-config.xml中添加validate属性,使相应字段开启验证过程,并配置validator-rules.xml和validation.xml,使之起作用。
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd ">
        <struts-config>
          <form-beans>
            <form-bean name="LoginActionForm" type="personal.system.Login.struts.actionform.LoginActionForm" />
          </form-beans>
          <action-mappings>
            <action input="/JSP/Login.jsp" name="LoginActionForm" path="/LoginAction" scope="request" type="personal.system.Login.struts.action.LoginAction" validate="true">
              <forward name="succeed" path="/JSP/index.jsp" />
              <forward name="failed" path="/JSP/Failed.jsp" />
            </action>
          </action-mappings>
          <message-resources parameter="ApplicationResources" />             ==>指定消息资料文件(Resource Bundle)的文件名,此处全名文件名即为ApplicationResources.properties
          <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>

定义Resource Bundle消息文件--ApplicationResources.properties
           password.name=Password              ==>定义参数值,password字段使用:<arg0 key="password.name" />
           User.name=Username                 ==>定义参数值,username字段使用:<arg0 name="required" key="User.name" resource="true"/>
   
           ##以下均为Validator框架的默认消息文本,其中的{0},{1},{2}...代表传入参数的取代位置。
           errors.required=<font color="red">{0} is required.</font>
           errors.minlength=<font color="red">{0} can not be less than {1} characters.</font>
           errors.maxlength=<font color="red">{0} can not be greater than {1} characters.</font>
           errors.invalid=<font color="red">{0} is invalid.</font>

           errors.byte=<font color="red">{0} must be a byte.</font>
           errors.short=<font color="red">{0} must be a short.</font>
           errors.integer=<font color="red">{0} must be an integer.</font>
           errors.long=<font color="red">{0} must be a long.</font>
           errors.float=<font color="red">{0} must be a float.</font>
           errors.double=<font color="red">{0} must be a double.</font>

           errors.date=<font color="red">{0} is not a date.</font>
           errors.range=<font color="red">{0} is not in the range {1} through {2}.</font>
           errors.creditcard=<font color="red">{0} is an invalid credit card number.</font>
           errors.email=<font color="red">{0} is an invalid e-mail address.</font>

分享到:
评论

相关推荐

    Struts1的validator验证框架

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

    Struts的Validator验证框架使用教程

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

    struts中使用validator验证框架

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

    struts validator验证框架项目

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

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

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

    struts 的validator框架验证

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

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

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

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

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

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

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

    Struts validator验证框架

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

    struts validator验证框架例子

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

    struts1验证框架相当好的经典例子

    接下来,我们需要配置Validator插件,这是Struts1验证框架的核心。通过`&lt;plug-in&gt;`标签,指定类名为`org.apache.struts.validator.ValidatorPlugIn`,并设置`pathnames`属性指向`validator-rules.xml`和`validation....

    struts中 validator验证实例和文档

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

    Validator验证框架

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

    struts2验证框架

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

    struts的validator框架

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

    struts_注册验证_Validator框架

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

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

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

    Validator验证框架.pdf

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

    struts1.3实现的Validator简单验证

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

Global site tag (gtag.js) - Google Analytics