首页 Java java教程 在Struts中使用Validator框架

在Struts中使用Validator框架

Dec 17, 2016 am 10:52 AM


  每个应用程序都有责任确保它们插入到后台资料库的数据是合法有效的,究竟,假如这些应用程序所依靠的数据一旦遭到了破坏,那将是灾难性的,那应用程序还能拿什么来使自己正常运转呢?比如说,使用正规关系数据库的一个应用程序,数据库中的每个字段都有自己一定的规则和约束,来保证存储在其中的数据在一定程度上的正确性。任何要使用后台资料库数据的应用程序都有责任保护它们提交的数据的完整性。
  
  任何试图插入或更新不符合标准的数据的操作都有可能被发现并拒绝。这种检测可能遍布在整个应用程序的每个角落,在表现层可能进行一些验证,在业务逻辑层,商业逻辑对象一般也有商业逻辑的验证,还有在后台资料库也要对数据进行检查。
  
  不幸的是,由于这种验证在应用程序中无处不在,造成了应用程序在一定程度上的验证数据的代码冗余。这并不是应用程序所希望的,因为这种在多处的重复劳动,使得应用程序的部署和维护要花去更多的时间。假如在整个应用程序中,这些验证规则可以重复使用,将使得应用程序更加富有弹性,换句话说就是,部署更快捷,定制更轻易,程序更灵活。
  
  Jakarta Commons 项目Validator框架简介
  Validator是由David Winterfeldt创建的开源项目,它也是Jakarta Commons的一个子项目。Commons项目主要是提供一些像Validator这样的一些可重用组件。其他闻名的Commons组件还有如BeanUtils,Digester,Logging框架等。Validator 1.0版本发布于2002年11月初。
  
  使用Validator的好处
     .使用Validator框架比一般的在应用程序的代码中定义验证规则有好多优点,如:
     .可以在一处为应用程序定义验证规则;
     .验证规则和应用程序是松耦合的;
     .服务器端和客户端的验证规则可以在同一处定义;
     .配置新验证规则或修改已有验证规则变得更加简单;
     .支持国际化;
     .支持正则表达式;
     .可以用于Web应用程序也可用于标准的java应用程序;
     .采用声明的方法实现而不是编程实现;
  除了之外,Validator最大的特征就是自身支持可插性(pluggability)。在文章的后
  
  面你将会看到使用Validator框架内置的验证规则来更好地完成你的工作,而更重要的是,Validator框架答应你自定义验证程序,并插入到框架中。
  
  Struts和Validator的关系
  应该指出的是Validator框架本身是因Struts框架而建立的。Validator的创建者David Winterfeldt在使用Struts的过程中发现,在许多ActionForm类中需要反复使用同一个验证规则,这样造成了大量的代码冗余。于是他决定创建Validator框架来消除这种冗余,这样Validator就诞生了。
  
  尽管Validator架构最初是为Struts架构而生,但它还是被设计和构造成了可以独立于Struts架构而单独使用。这一个特征使得你可以在任何的应用程序中使用这个框架,不必管它是不是Struts架构的。并不会因为你不使用Struts框架而影响Validator架构对你的应用程序作用。事实上,这就是为什么Validator是Jakarta Commons项目的一部分而不直接是Struts项目的一部分。
  
  现在,我们来将这个框架整合应用到像基于Struts构架这样的Web应用程序上。在文章的最后中我们再介绍如何把它应用到其他类型的应用程序中,如基于EJB的应用程序。
  
  Validator组件概述
     Validator架构有下面这些组件组成:
     Validators;
     配置文件;
     资源绑定;
     jsp自定义标签;
     Validator Form类;
  
  什么是Validators?
  一个Validator就是,执行一个验证规则时Validator框架调用的一个Java类。框架根据配置文件中定义的方法签名来调用这个Validaotor类。一般情况下,每个Validator类提供一个单独的验证规则,然后这些规则可以组合成更复杂的规则集。
  
  注重:有时出于方便,一个Validator类也可以定义多个验证规则,而每个规则是一个静态方法且并不包含任何客户端状态信息。
  
  框架提供了14种默认的验证规则,有时候这些规则也被称为Validator框架的“基本规则”,这些基本规则如表一:
  名称           描述
  byte,short,integer, 检验值是否能被转换成对应的基本数据类型
  long,float,double 
  creditCard        检验输入域是否是一个合法的信用卡号码
  date        检验输入域是否是一个合法日期
  email        检验输入是否是一个合法Email地址
  mask        检验输入域是否能成功匹配一个正则表达式
  maxLength       检验值的长度是否小于等于给定的最大长度
  minLength       检验值的长度是否大于等于给定的最小长度
  range        检验值的范围是否在最大值和最小值之间
  required        检验输入域是否为不为空,或不包含空格值的长度是否大于零
  表一
  正像你在表一中看到的,Validator框架提供了Web应用程序需要的大多数的验证规则。你可以使用这些现有的验证规则来创建自己验证配置文件。尽管这样,也正如我们前面提到的,和后面要讲到的,你可以根据你的需要随意的增加更多的Validator。
  
  现在,让我们来讨论如何在一个基于Struts架构的应用程序中配置使用这些基本的Validator。
  使Validator框架具有弹性的原因在于所有的验证规则和其具体细节都是通过在外部文件中配置声明实现的。你的应用程序并不必要知道这些具体的验证规则。这一特征使得规则集的发生扩展和修改时,你并不用去动你应用程序的源代码。这一点对你要进行每次的个性化安装或当需求发生变化时来说是非常重要的。
  假如你使用Struts1.1的Validator框架,你会用到这样两个配置文件,一个叫validator- rules.xml,另一个叫validation.xml;其实你也可以随意的给他们命名,甚至可以把它们合并成一个XML文件。但是,你还是最好把它们分开,因为它们各有各的用途。
  
  注重:假如你从Jakarta网站上下载Validator,并不包含这两个文件。只有在包含的Validator框架的Struts的下载中才可以找到这两个文件。
  validator-rules.xml文件
  validator-rules.xml文件定义应用程序可以使用的Validator。validator-rules.xml充当模板的作用,定义所有应用程序可能要用到的Validator。
  
  注重:这个xml文件和我们下面要讨论的另一个xml文件都应该放到类加载器可以找得到的地方。当我们在Web应用程序中使用Validator框架时,正确的位置应该是在WEB-INF下。 
  validator-rules.xml文件服从validator- rules_1_1.dtd的治理,validator- rules_1_1.dtd可以在jakarta.apache.org/struts/dtds/validator- rules_1_1.dtd下载到。我们并不想花太多的时间放在研究这个文件的具体细节上,我们在这儿只作一些基本的介绍。
  validator-rules.xml文件中最重要的元素包含在元素中,例如,例一:
  例一:一个简单的validator-rules.xml文件
  
  
        name="required"
     classname="org.apache.struts.util.StrutsValidator"
     method="validateRequired"
     methodparams="java.lang.Object,
            org.apache.commons.validator.ValidatorAction,
            org.apache.commons.validator.Field,
            org.apache.struts.action.ActionErrors,
            javax.servlet.http.HttpServletRequest"
     msg="errors.required"/>
     
        classname="org.apache.struts.util.StrutsValidator"
     method="validateMinLength"
     methodparams="java.lang.Object,
            org.apache.commons.validator.ValidatorAction,
            org.apache.commons.validator.Field,
            org.apache.struts.action.ActionErrors,
            javax.servlet.http.HttpServletRequest"
   depends="required"
       msg="errors.minlength"/>
  

  

   
  
  
  应用程序使用的每个Validator对应一个元素。在例一中给大家展示了两个Validator,一个是请求Validator,另一个是最小长度Validator。元素支持许多属性。这些属性是必要的,用于告知框架这个Validator应当调用哪个正确的类和方法。例如,例一中的请求Validator元素表明这个Validator将调用org.apache.struts.util.StrutsValidator类的validateRequest()方法。Validator也可能要依靠另一个Validator,如例一中的最小长度的Validator就是这样一个例子,它包含一个depends属性,用它来表示这个Validator将依靠于请求Validator。msg属性用一个键值指定一个资源绑定,框架将用它来生成正确的错误信息。资源绑定的使用有益于错误信息的本地化。
    元素还支持子元素,答应你指定一个客户端运行的javascript函数。这样服务器端和客户端验证可以在同一处指定,这使应用程序的维护变得简单。
  
  validation.xml文件
  Validator框架的第二个配置文件就是这个叫validation.xml的文件。其实你可以随意把它命名为你喜欢的任何名字,也 

 以上就是在Struts中使用Validator框架内容,更多相关文章请关注PHP中文网(www.php.cn)!


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

深度探讨Struts框架的原理与实践 深度探讨Struts框架的原理与实践 Feb 18, 2024 pm 06:10 PM

Struts框架的原理解析与实践探索Struts框架作为JavaWeb开发中常用的MVC框架,具有良好的设计模式和可扩展性,广泛应用于企业级应用程序开发中。本文将对Struts框架的原理进行解析,并结合实际代码示例进行探索,帮助读者更好地理解和应用该框架。一、Struts框架的原理解析1.MVC架构Struts框架基于MVC(Model-View-Con

解析Struts2框架的工作原理 解析Struts2框架的工作原理 Jan 05, 2024 am 08:29 AM

探秘Struts2框架的内部机制Struts2是一个流行的JavaWeb应用程序框架,被广泛应用于开发基于MVC架构的Web应用程序。它基于Struts1的基础上进行了大量的改进和优化,提供了更强大、更灵活的功能。在深入探索Struts2框架的内部机制之前,我们需要了解一些基本概念。Struts2框架的核心是MVC(Model-View-Controlle

Java后端开发:使用Java Apache Struts进行API MVC框架开发 Java后端开发:使用Java Apache Struts进行API MVC框架开发 Jun 17, 2023 am 10:03 AM

随着互联网和智能移动设备的普及,Web应用程序的开发日趋重要。而Java作为一种优秀的跨平台编程语言,受到了开发者们的青睐。在Java后端开发中,使用MVC框架可以帮助我们提高开发效率、降低开发成本。本文将介绍使用JavaApacheStruts进行API的MVC框架开发。一、MVC框架MVC(Model-View-Contro

struts框架的原理和应用有哪些 struts框架的原理和应用有哪些 Jan 03, 2024 pm 05:31 PM

struts框架的原理:通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的MVC设计模式的应用框架,它通过采用一个或多个Action类来处理用户请求,并将结果返回给用户。struts框架的应用:1、构建Web应用程序;2、处理表单数据;3、集成第三方库;4、实现国际化;5、构建RESTful API。

Java语言中的Struts框架介绍 Java语言中的Struts框架介绍 Jun 10, 2023 pm 08:00 PM

Java语言中的Struts框架介绍随着Web应用程序的逐渐普及,比如Web网站和企业应用系统,JavaEE(EnterpriseEdition)架构也逐渐成为了一个主流的选择。在JavaEE架构中,由于MVC(Model-View-Controller)设计模式的流行,Struts框架成为了大家经常使用的Web应用程序框架之一。在本文中,我们将深入探

深入剖析Struts2框架的运行机制 深入剖析Struts2框架的运行机制 Jan 05, 2024 pm 03:36 PM

深入解析Struts2框架的工作原理Struts2是一个优秀的JavaWeb应用开发框架,其提供了基于MVC(Model-View-Controller)模式的开发方式,帮助开发人员更快速地构建和维护Web应用程序。理解Struts2框架的工作原理对于开发人员来说是非常重要的,本文将通过详细的解析和具体的代码示例,帮助读者深入了解Struts2框架的工作原

Struts2框架实现原理的详细解析 Struts2框架实现原理的详细解析 Feb 21, 2024 pm 05:54 PM

Struts2框架实现原理的详细解析Struts2框架作为一个广泛应用的JavaWeb应用框架,其优秀的设计和性能使得它成为开发者们喜爱使用的工具。了解Struts2框架的实现原理,对于提升开发者对框架的理解和应用水平具有重要意义。本文将通过详细解析Struts2框架的实现原理,并提供具体的代码示例,帮助读者更加深入地了解这一框架。一、Struts2框架简

探究struts框架的原理及应用 探究struts框架的原理及应用 Jan 04, 2024 am 08:19 AM

深入解析Struts框架的原理与应用摘要:Struts框架是一个优秀的JavaWeb应用程序开发框架,其基于MVC设计模式,以及一系列的标签库和拦截器,为开发者提供了一种简单、规范的方式来构建Web应用程序。本文将深入解析Struts框架的原理与应用,包括框架的工作原理、主要组件以及通过示例代码来展示其具体的应用。一、Struts框架的工作原理Struts

See all articles