知识大全 Validator验证框架入门

Posted 框架

篇首语:生当作人杰,死亦为鬼雄。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Validator验证框架入门相关的知识,希望对你有一定的参考价值。

Struts1.x系列教程(10):Validator验证框架入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 Validator框架的优势

  Validator框架是一个Struts插件 最初由David Winterfeldt设计并实现 Validator框架从Struts 时代就可以使用 但那时Validator框架只是被捐助的一个jar包 Apache组织为了使开发人员更方便地使用Validator框架 决定从Struts 开始 将Validator框架作为Struts的一部分同Struts一起发布

  Validator框架可以在XML文件中配置验证规则和验证对象 因此 使用Validator框架可以无需在ActionForm的子类中覆蓋validate方法就可以很方便地验证客户端的提交数据 由于Validator框架内置了很多预定义的验证机制 如验证某个属性是否存在 验证EMail是否合法等 所以在一般情况下 只需要配置XML文件就可以满足我们的验证需求

  在使用Validator框架时 就会发现这种方式要比直接使用validate方法进行验证会给我们带来如下的好处

     更容易维护 由于验证信息可以被放置在同一个配置文件中 因此 我们可以更容易地来维护这些验证信息

     标准化 由于很多简单的验证都是相同的 如用户名和密码都要求由字母 数字以及下划下组成 如果将这些验证都写在validate方法中 对这些验证进行标准化非常困难 而在Validator框架中的这些验证机制都是预先定义的 因此 标准化相同的验证对于Validator框架来说将是一件非常轻松的事

     避免重造轮子 虽然一些验证很简单 但如果想正确实现它们也是非常困难的 一个典型的例子是验证EMail地址的格式 如果这个验证要想完美无缺 就必须按著RFC 规范的要求来验证EMail地址 而如果我们使用Validator框架 就无需再重造轮子来验证EMail地址了

     减少重复代码的数量 由于Validator框架提供了很多预定义的验证 因此 我们可以避免自己写很多重复的代码进行验证 当然 我们也可以将大量使用的验证封装在类的方法中 这些虽然可以避免大量的重复劳动 但这就意味着我们团队的新成员要使用这些被封装的验证方法之前必须先学习它们 而最糟糕的情况是很多开发人员可能会忘记使用这些由其他成员实现的验证库 而自己重新编写具有同样功能的验证库 当然 这一切如果使用Validator框架就都可以得到解决

     客户端和服务端验证自动切换 我们只需要简单地在JSP页面中放一个单独的< javascript/>元素就可以将服务端的验证转换为客户端验证(基于JavaScript的验证)

  虽然Validator框架的预定义验证已经可以满足大多数的验证需求了 但在某些特殊情况下 这些预定义验证就无法满足我们的需求了 为此 Validator框架也为开发人员提供了扩展验证机制的功能 这也使得Validator框架可以完成更复杂的验证工作

  <!——[endif]——>

  二 配置和使用Validator框架

     安装Validator框架

  由于Validator是Struts的一个插件 因此 就需要在struts config xml文件中按著Struts插件的方式来安装Validator框架 打开struts config xml文件 在<struts config>元素中加入一个<plug in>子元素 如下面的代码所示

   <plug in className= apache struts validator ValidatorPlugIn >    <set property property= pathnames value= /WEB INF/validator rules xml  /WEB INF/validator xml  /></plug in>

  其中<set property>元素设置了插件中使用的pathnames属性的值 在pathnames属性值中包含了两个xml文件

  ( )validator rules xml 在这个文件中声明了Validator框架的预定义验证 这个文件可以在Struts的发行包的lib目录中可以找到这个文件 在使用MyEclipse为Web工程添加Struts功能后 会自动将这个文件加到WEB INF目录中

  ( )validator xml 这个文件定义了要验证的对象 实际上 在这个文件中 包含了一个或多个ActionForm的子类及其要验证的属性和验证规则 因此 这个文件就相当于validate方法 在Validator框架中 可以有多个定义验证对象的xml文件(可以将不同的ActionForm的子类分散到不同的xml文件中) 中间用逗号( )隔开 如下面的代码所示 <!——[endif]——>

   <plug in className= apache struts validator ValidatorPlugIn >    <set property property= pathnames value= /WEB INF/validator rules xml  /WEB INF/validator xml                                              /WEB INF/validator xml /WEB INF/validator xml  /></plug in>

     使用Validator框架的一个例子

  在本节将举一个例子来演示如何使用Validator框架来验证数据 我们需要按著如下的六步来完成这个例子

  【第 步】建立FirstValidatorForm类(ValidatorForm的子类)

  在<samples工程目录>\\src\\actionform目录中建立一个FirstValidatorForm java文件 代码如下

     package actionform;  import  apache struts validator ValidatorForm;  public class FirstValidatorForm extends ValidatorForm  // 必须从ValidatorForm继承        private String name;      private String age;      private String email;      public String getName()                return name;            public void setName(String name)                this name = name;            public String getEmail()                return email;            public void setEmail(String email)                this email = email;            public String getAge()                return age;            public void setAge(String age)                this age = age;        

  要注意的是 要想使用Validator框架验证数据 Form类就必须从ValidatorForm继承 而不能从ActionForm继承 这是因为ValidatorForm类是从ActionForm继承的 在ValidatorForm类中已经覆蓋了validate方法来自动进行验证工作 因此 我们在ValidatorForm的子类中就不用写validate方法了

  <!——[endif]——>

  【第 步】建立ValidatorAction类(Action的子类)

  在<samples工程目录>\\src\\action目录中建立一个ValidatorAction java文件 代码如下

     package action;  import javax servlet *;  import  apache struts action *;  public class ValidatorAction extends Action        public ActionForward execute(ActionMapping mapping  ActionForm form               HttpServletRequest request  HttpServletResponse response)                response setCharacterEncoding( GBK );          try                        response getWriter() println( 验证成功! );                    catch (Exception e)                              return null;        

  ValidatorAction类是一个空的Struts动作类(除了输出一行 验证成功! 字符串) 这个动作是为了正常运行含有Struts元素的JSP程序所编写的 在以后的代码中会经常使用到这个Struts动作类

  【第 步】配置struts config xml文件

  配置FirstValidatorForm和ValidatorAction的代码如下所示

   <form bean name= firstValidatorForm  type=  actionform FirstValidatorForm  /><action name= firstValidatorForm  path= /firstValidator  scope= request type=  action ValidatorAction   input= /firstValidator jsp />

  其中firstValidator jsp是用户录入信息的界面 也是显示错误信息的界面

  【第 步】建立firstValidator jsp在Web根目录建立一个firstValidator jsp文件 代码如下 <!——[endif]——>

     <%@ page pageEncoding= GBK %>  <%@ taglib uri=  prefix= %>  <>    <head>      <title>第一个Validator程序</title>    </head>    <body>      <:form action= firstValidator  >         姓  名 <:text property= name  />&nbsp;&nbsp;<font color= red ><:errors property= name /></font><p>         年  龄 <:text property= age />&nbsp;&nbsp;<font color= red ><:errors property= age /></font><p>       EMail <:text property= email />&nbsp;&nbsp;<font color= red ><:errors property= email /></font><p>              <:submit value= 提交 />      </:form>      </body>  </>

  从firstValidator jsp中可以看出 不管是否使用Validator框架进和验证 对于JSP代码来说是完全一样的 仍然是使用< errors>元素来显示错误信息 但要注意 在使用Validator框架时 < errors>标签的property属性的值就是所对应ValidatorForm的子类的属性名

  【第 步】配置validator xml文件在本例中只使用了一个XML文件(validator xml)来配置要验证的对象 validator xml的代码如下 <!——[endif]——>

     <?xml version=  encoding= GBK  ?>  <!DOCTYPE form validation PUBLIC    //Apache Sofare Foundation//DTD Commons Validator Rules Configuration  //EN              _ _ _ dtd >  <form validation>      <formset>          <form name= firstValidatorForm >              <field property= name  depends= required maxlength minlength mask >                  <msg name= required  key= error name blank  />                  <msg name= minlength  key= error name minLength  />                  <msg name= maxlength  key= error name maxLength  />                  <msg name= mask  key= error name alphanum  />                    <arg name= minlength  key= $var:minlength  position=  resource= false  />                  <arg name= maxlength  key= $var:maxlength  position=  resource= false  />                  <var>                      <var name>minlength</var name>                      <var value> </var value>                  </var>                  <var>                      <var name>maxlength</var name>                      <var value> </var value>                  </var>                  <var>                      <var name>mask</var name>                      <var value>^[a zA Z ]*$</var value>                  </var>              </field>              <field property= age  depends= required integer intRange >                  <msg name= required  key= error age blank  />                  <msg name= integer  key= error age integer  />                  <msg name= intRange  key= error age intRange  />                    <arg name= intRange  key= $var:min  position=  resource= false  />                  <arg name= intRange  key= $var:max  position=  resource= false  />                  <var>                      <var name>min</var name>                      <var value> </var value>                  </var>                  <var>                      <var name>max</var name>                      <var value> </var value>                  </var>                </field>              <field property= email  depends= required email >                  <msg name= required  key= error email blank  />                  <msg name= email  key= error email invalid  />              </field>          </form>      </formset>  </form validation>

  validator xml文件中的所有配置都放到<form validation>元素中 在<form validation>元素中有一个<formset>子元素 这个元素可以定义多个<Form>元素 这个元素用来定义要验证的ValidatorForm类的子类 其中name属性值就是<form bean>元素中的name属性值

  <field>元素用来定义某个属性的约束条件 如第一个<field>元素定义了name属性必须存在(required) 必须要满足最小长度(minlength)和最大长度(maxlength)以及还要通过mask所指的正则表达式的验证

  <msg>元素用来定义出错信息在属性文件中的Key(所有的出错信息都在属性文件中) <arg>元素用来向出错信息中的参数传递参数值 <var>元素用来定义变量名和变量值

  【第 步】在ErrorDescription properties文件中添加错误信息

  打开ErrorDescription properties文件 在文件的后面添加如下的内容

     error name blank = 姓名不能为空  error name minLength = 姓名的长度不能小于   error name maxLength = 姓名的长度不能大于   error name alphanum = 姓名必须由字母和数字组成  error age blank = 年龄不能为空  error age integer = 年龄必须为数字  error age intRange = 年龄必须在 和 之间

  启动Tomcat 在IE中输入如下的URL来测试程序

  //localhost /samples/% firstValidator jsp

  在输入一些错误信息后 点击 提交 按钮 将出现类似下图的效果

cha138/Article/program/Java/ky/201311/27910

相关参考

知识大全 详解Struts中Validator验证框架的使用

详解Struts中Validator验证框架的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 框架Hibernate Validator 简介

框架HibernateValidator简介  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用A

知识大全 深入了解Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 深入了解 Struts Validator

开发框架:深入了解StrutsValidator  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!St

知识大全 使用Validation框架验证数据

Struts2教程5:使用Validation框架验证数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 浅谈Struts2验证框架及用户注册

浅谈Struts2验证框架及用户注册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 php ci框架验证码实例分析

  php代码复制代码代码如下:<?phpclassCaptcha_codevar$width=;var$num=;var$height=;var$name=randcode;publicfun

知识大全 ASP.NET入门教程 4.2.4 身份验证[2]

ASP.NET入门教程4.2.4身份验证[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 ASP.NET入门教程 4.2.4 身份验证[3]

ASP.NET入门教程4.2.4身份验证[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 ASP.NET入门教程 4.2.4 身份验证[1]

ASP.NET入门教程4.2.4身份验证[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb