`
lgl669
  • 浏览: 169161 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts验证框架开发

    博客分类:
  • java
阅读更多

一、启用Validator插件

虽然Validator框架是与Struts封装在一起提供的,但在默认状况下Validator并不被启用。为了启用Validator,要向你的应用程序的struts-config.xml文件中添加下面的插件定义。

  <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-rules.xml
    Struts示例应用程序带有这个文件的预配置拷贝。在大多数情况下,你不必修改这个预配置拷贝,除非你要向该框架中添加自己定制的验证。默认情况下,Validator中包括几个基本验证例行程序,你可以用它们来处理大多数验证问题。这些例行程序具有逻辑名称,如required(用于输入要求的值)、CreditCard(用于输入信用卡号码值)、email(用于输入电子邮件地址值),等等。

三、配置ApplicationResource.properties
    ApplicationResource.properties属性文件中这时应该追加用于验证错误的消息,validator-rules.xml的标准验证逻辑中包括了错误信息的名称,譬如required验证会在“msg”属性中包括errors.required消息,这时你就需要在ApplicationResource.properties中定义该消息,必须要和validator-rules.xml中的msg申明的消息名称一致。例如:

 

  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.

 

将这些信息直接拷贝到ApplicationResource.properties中即可。

四、创建Form
   根据不同情况分别可以创建三种类型的form:
   1、ValidatorForm
   2、DynaValidatorForm
   3、ValidatorActionForm和DynaValidatorActionForm
   注意:对于由myeclipse生成的静态form,如果在form中包括validate()方法,要将其去掉,否则,验证就会被这个空的validate()方法覆盖而没有发挥作用

   创建步骤类似,ValidatorForm需要具体的form,该form继承自ValidatorForm,并且不包含reset()和validate()方法,而DynaValidatorForm不需要具体的form,这两种form的实现方法基本相同,

对ValidatorActionForm和DynaValidatorActionForm的解释:

   对于1、2两种验证有一点不足,就是在validation.xml文件中将表单属性的验证捆绑到具体的form上了,譬如:

 <form name="registerForm">
            <field
                property="userName"
                depends="required">
                    <arg key="label.username"/>
            </field>
            <field
                property="passWord"
                depends="required,maxlength">
                    <arg0 key="label.password"/>
                    <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
                    <var>
                      <var-name>maxlength</var-name>
                      <var-value>8</var-value>
                    </var>
            </field>           
            <field
                property="phone"
                depends="required,mask">
                    <arg key="label.phone"/>
<var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9]*$</var-value>
                    </var>
            </field>
        </form>

        可以看到,form的name属性指定了具体的form即registerForm,下面对三个属性的验证规则只能用在registerForm上,如果这三个验证规则是通用的就好了,也就是说如果存在注册表单和修改表单的操作都能够使用这三个规则就好了,这时就要引入一个概念就是验证跟随操作,而不是绑定到具体的form上。例如注册表单和修改表单由于验证规则相同,则将三个验证规则放到具体的action上就行了,验证规则可以如下定义:

 <form name="/register">
            <field
                property="userName"
                depends="required">
                    <arg key="label.username"/>
            </field>
            <field
                property="passWord"
                depends="required,maxlength">
                    <arg0 key="label.password"/>
                    <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
                    <var>
  <var-name>maxlength</var-name>
                      <var-value>8</var-value>
                    </var>
            </field>           
            <field
                property="phone"
                depends="required,mask">
                    <arg key="label.phone"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9]*$</var-value>
                    </var>
            </field>
        </form>
           <form name="/editregister">
            <field
                property="userName"
                depends="required">
                    <arg key="label.username"/>
            </field>
            <field
                property="passWord"
 depends="required,maxlength">
                    <arg0 key="label.password"/>
                    <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
                    <var>
                      <var-name>maxlength</var-name>
                      <var-value>8</var-value>
                    </var>
            </field>           
            <field
                property="phone"
                depends="required,mask">
                    <arg key="label.phone"/>
                    <var>
                        <var-name>mask</var-name>
                        <var-value>^[0-9]*$</var-value>
                    </var>
            </field>
        </form>

     上面form的name属性已不再是struts-config.xml中定义的form的name,而是其中定义的action的path属性值。

      为了解决这个问题,Validator提供了两个附加的ActionForm子类,它使你能够将验证与操作相关联,而不是与Form Bean相关联。这样你就可以根据哪个操作正在使用Form Bean来指定把哪些验证用于该Form Bean了。

五、创建Validation.xml
 下面介绍一下validation.xml配置文件的标签:
<form-validation></form-validation>是总框架
<formset></formset>是对Form里的数据进行配置
<form name="ActionForm对应的名称"></form>对一个ActionForm里的数据进行验证配置
<field property="ActionForm里的属性名" depends="验证规则,可以是Validation-rules里定义好的也可以是自定义的验证规则">这里配置一个属性的验证内容
<arg0 name="对应的验证规则名称" key="可以直接填入数值,也可填入变量表达式:${var:变量名}" resource="true/false"(代表是否从资源文件中读取信息,否则Key的值以参数的形式返回)>
<var></var>定义一个变量的标签体,可以在里面具体设置变量的名称以及数值
<var-name>对应Key里定义的变量名称</var-name>
<var-value>值</var-value>
<msg name="对应的验证规则名称" key="资源文件中定义的变量名称">这里定义了信息变量后,会默认定义的信息变量。
在验证规则中大部分可以使用已经预定义好的规则,它们在validator-rules.xml里,当然我们自己也可以定义规则。

其实,这个文件名可以是任意的,可以起成别的名字,比如:validators.xml,不过,也要相应修改struts-config.xml文件中的加入validator框架PlugIn中的value属性。这个value属性用来指定validator-rules文件和具体的验证文件。

1)根元素:
validators.xml文件的“根元素(Root)”是form-validation,
意味着整个文件的内容包含在“<form-validation>”和“</form-validation>”之间,

2)元素global:
这个东西包含constant子元素,用来定义一个全局的“验证限制”,
以便在这个文件的其他地方使用这些验证规则。
例如:

 <global>
        <constant>
            <constant-name>userName</constant-name>
            <constant-value>^\s*[\w-]{0,30}$</constant-value>
        </constant>
        <constant>           
            <constant-name>password</constant-name>
            <constant-value>^\s*[.\w@#!$%^*()-]{6,20}\s*$</constant-value>
        </constant>
        <constant>       
            <constant-name>email</constant-name>
 <constant-value>^\s*([A-Za-z0-9]+(\.\w+)*@([\w-]+\.)+\w{2,3})\s*$</constant-value>
        </constant>
    </global>


完整实例如下:
<form-validation>
    <global>
        <constant>
            <constant-name>userName</constant-name>
            <constant-value>^\s*[\w-]{0,30}$</constant-value>
        </constant>
        <constant>           
            <constant-name>password</constant-name>
            <constant-value>^\s*[.\w@#!$%^*()-]{6,20}\s*$</constant-value>
        </constant>
        <constant>       
            <constant-name>email</constant-name>
            <constant-value>^\s*([A-Za-z0-9]+(\.\w+)*@([\w-]+\.)+\w{2,3})\s*$</constant-value>
        </constant>
    </global>
  <formset>
    <form name="employeeActionForm">
    <field property="vname" depends="required,maxlength">
      <arg0 key="employee.name"/>
      <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
      <var>
        <var-name>maxlength</var-name>
        <var-value>10</var-value>
      </var>
    </field>
    <field property="vsex" depends="required,maxlength">
      <arg0 key="employee.sex"/>
      <arg1 name="maxlength" key="${var:maxlength}" resource="false"/>
      <var>
        <var-name>maxlength</var-name>
 <var-value>5</var-value>
      </var>
    </field>
    <field property="vage" depends="required,integer,intRange">
      <arg0 key="employee.age"/>
      <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="vmoney" depends="integer">
      <arg0 key="employee.money"/>
    </field>
    </form>
  </formset>
</form-validation>

对部分元素的解释:

分享到:
评论

相关推荐

    Struts2框架源码

    适合新手学习struts2,使用myeclipse9开发,源码包含拦截器、验证等演示代码。

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Struts2 概述 如何应用Struts2 Struts2 配置文件 如何编写Action 拦截器 Struts2的标签 OGNL 数据校验 国际化

    Struts2框架做的用户登录的简单实例

    只使用Struts2框架和struts标签做的一个简单用户登录系统,没有连接数据库,知识把用户输入信息传到后台校验,判断下,返回信息。开发工具myeclipse,tomcat

    Struts2的校验框架之一

    Struts2应用开发系列Struts2的校验框架

    Struts2的校验框架之四

    Struts2应用开发系列Struts2的校验框架

    Struts2的校验框架之三

    Struts2应用开发系列Struts2的校验框架

    Struts2的校验框架之二

    Struts2应用开发系列Struts2的校验框架

    基于AJAX技术实现Struts校验框架

    实时的数据校验是AJAX技术的重要优点之一,Struts校验框架通过加入这种技术进一步丰富了其MVC,从而使得Web应用程序的开发效果更接近于桌面应用程序。 一、引言 校验框架的根本目的是实现域校验。在Web应用程序中...

    李兴华 struts2开发实战经典 源码

    本源码主要涉及了Struts 2的核心操作包、配置文件、核心开发模式的使用,在本课程讲解的时候主要结合Struts 2的核心优点以及从代码比较上讲解了和Struts 1的区别,随后又包含了Struts 2中提供的各个优秀技术,如转换...

    本人自己开发的Struts框架 可以自动填充属性 及验证跳转

    本人自己开发的Struts框架 可以自动填充属性 及验证跳转 ,唯一没做的是文件上传,简单易懂 值得学习

    精通Struts基于MVC的Java Web设计与开发 孙卫琴 光盘

    第8章到第9章介绍了开发Struts应用的一些实用技术,如Struts框架的扩展点、Struts应用的国际化,Validator验证框架和异常处理机制等。第12章到第16章结合具体的Struts应用实例,详细介绍了Struts的标签库以及Tiles...

    精通 Struts:基于 MVC 的 JavaWeb 设计与开发(PDF)

    第8章到第9章介绍了开发Struts应用的一些实用技术,如Struts框架的扩展点、Struts应用的国际化,Validator验证框架和异常处理机制等。第12章到第16章结合具体的Struts应用实例,详细介绍了Struts的标签库以及Tiles...

    struts2写的电子商城系统

    根据网上的资源实现了一个登陆时邮箱验证的功能,前台的页面比较明确,后台使用开源的第三方框架,有点乱。由于交作业比较着急,后台有些功能只有显示没有代码的具体实现,不过功能也足够交作业了。

    Struts三大框架系统

    这个项目是由我们三个小组成员共同开发的,可能有些地方不足,但这个项目中有很多好的东西,比如发送邮件来验证验证码

    STRUTS 2完全学习手册.pdf

    《Struts 2完全学习手册》全面讲述Struts 2开发框架的知识,包括Struts 2中配置文件的详细讲解、国际化与异常处理、数据类型的转换、数据的输入校验、Struts 2强大的标签库、Struts 2中文件的上传与下载、Struts 2对...

    struts2框架邮件登录·

    该实例展示了struts2的MVC开发模式,并且运用struts2自带的表单验证功能

    struts2对Action提交方法进行验证

    但是这样做,不好之处就是我们可以通过人为的将开发者的验证js注掉,这样就导致验证失败,对后台安全性是一个很大的威胁,在采用struts2进行开发时,我们可以采用框架内置的校验器! 本附件为【Struts2】★☆之...

    struts validator框架验证和多模块开发总结.doc

    学海无涯,技术无疆!分享所得,大家共勉。赚分贴!

    Struts应用开发完全手册源代码

    所发布的是《Struts应用开发完全手册》的全部源代码,以数字命名的文件代表书中的章节!

    精通Struts_基于MVC的Java Web设计与开发

    第8章到第9章介绍了开发Struts应用的一些实用技术,如Struts框架的扩展点、Struts应用的国际化,Validator验证框架和异常处理机制等。第12章到第16章结合具体的Struts应用实例,详细介绍了Struts的标签库以及Tiles...

Global site tag (gtag.js) - Google Analytics