国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

在Struts中使用Validator框架

2019-11-18 15:56:37
字體:
供稿:網(wǎng)友

  每個應用程序都有責任確保它們插入到后臺資料庫的數(shù)據(jù)是合法有效的,究竟,假如這些應用程序所依靠的數(shù)據(jù)一旦遭到了破壞,那將是災難性的,那應用程序還能拿什么來使自己正常運轉(zhuǎn)呢?比如說,使用正規(guī)關(guān)系數(shù)據(jù)庫的一個應用程序,數(shù)據(jù)庫中的每個字段都有自己一定的規(guī)則和約束,來保證存儲在其中的數(shù)據(jù)在一定程度上的正確性。任何要使用后臺資料庫數(shù)據(jù)的應用程序都有責任保護它們提交的數(shù)據(jù)的完整性。
  
  任何試圖插入或更新不符合標準的數(shù)據(jù)的操作都有可能被發(fā)現(xiàn)并拒絕。這種檢測可能遍布在整個應用程序的每個角落,在表現(xiàn)層可能進行一些驗證,在業(yè)務(wù)邏輯層,商業(yè)邏輯對象一般也有商業(yè)邏輯的驗證,還有在后臺資料庫也要對數(shù)據(jù)進行檢查。
  
  不幸的是,由于這種驗證在應用程序中無處不在,造成了應用程序在一定程度上的驗證數(shù)據(jù)的代碼冗余。這并不是應用程序所希望的,因為這種在多處的重復勞動,使得應用程序的部署和維護要花去更多的時間。假如在整個應用程序中,這些驗證規(guī)則可以重復使用,將使得應用程序更加富有彈性,換句話說就是,部署更快捷,定制更輕易,程序更靈活。
  
  Jakarta Commons 項目Validator框架簡介
  Validator是由David Winterfeldt創(chuàng)建的開源項目,它也是Jakarta Commons的一個子項目。Commons項目主要是提供一些像Validator這樣的一些可重用組件。其他聞名的Commons組件還有如BeanUtils,Digester,Logging框架等。Validator 1.0版本發(fā)布于2002年11月初。
  
  使用Validator的好處
     .使用Validator框架比一般的在應用程序的代碼中定義驗證規(guī)則有好多優(yōu)點,如:
     .可以在一處為應用程序定義驗證規(guī)則;
     .驗證規(guī)則和應用程序是松耦合的;
     .服務(wù)器端和客戶端的驗證規(guī)則可以在同一處定義;
     .配置新驗證規(guī)則或修改已有驗證規(guī)則變得更加簡單;
     .支持國際化;
     .支持正則表達式;
     .可以用于Web應用程序也可用于標準的java應用程序;
     .采用聲明的方法實現(xiàn)而不是編程實現(xiàn);
  除了之外,Validator最大的特征就是自身支持可插性(pluggability)。在文章的后
  
  面你將會看到使用Validator框架內(nèi)置的驗證規(guī)則來更好地完成你的工作,而更重要的是,Validator框架答應你自定義驗證程序,并插入到框架中。
  
  Struts和Validator的關(guān)系
  應該指出的是Validator框架本身是因Struts框架而建立的。Validator的創(chuàng)建者David Winterfeldt在使用Struts的過程中發(fā)現(xiàn),在許多ActionForm類中需要反復使用同一個驗證規(guī)則,這樣造成了大量的代碼冗余。于是他決定創(chuàng)建Validator框架來消除這種冗余,這樣Validator就誕生了。
  
  盡管Validator架構(gòu)最初是為Struts架構(gòu)而生,但它還是被設(shè)計和構(gòu)造成了可以獨立于Struts架構(gòu)而單獨使用。這一個特征使得你可以在任何的應用程序中使用這個框架,不必管它是不是Struts架構(gòu)的。并不會因為你不使用Struts框架而影響Validator架構(gòu)對你的應用程序作用。事實上,這就是為什么Validator是Jakarta Commons項目的一部分而不直接是Struts項目的一部分。
  
  現(xiàn)在,我們來將這個框架整合應用到像基于Struts構(gòu)架這樣的Web應用程序上。在文章的最后中我們再介紹如何把它應用到其他類型的應用程序中,如基于EJB的應用程序。
  
  Validator組件概述
     Validator架構(gòu)有下面這些組件組成:
     Validators;
     配置文件;
     資源綁定;
     jsp自定義標簽;
     Validator Form類;
  
  什么是Validators?
  一個Validator就是,執(zhí)行一個驗證規(guī)則時Validator框架調(diào)用的一個Java類。框架根據(jù)配置文件中定義的方法簽名來調(diào)用這個Validaotor類。一般情況下,每個Validator類提供一個單獨的驗證規(guī)則,然后這些規(guī)則可以組合成更復雜的規(guī)則集。
  
  注重:有時出于方便,一個Validator類也可以定義多個驗證規(guī)則,而每個規(guī)則是一個靜態(tài)方法且并不包含任何客戶端狀態(tài)信息。
  
  框架提供了14種默認的驗證規(guī)則,有時候這些規(guī)則也被稱為Validator框架的“基本規(guī)則”,這些基本規(guī)則如表一:
  名稱           描述
  byte,short,integer, 檢驗值是否能被轉(zhuǎn)換成對應的基本數(shù)據(jù)類型
  long,float,double
  creditCard        檢驗輸入域是否是一個合法的信用卡號碼
  date        檢驗輸入域是否是一個合法日期
  email        檢驗輸入是否是一個合法Email地址
  mask        檢驗輸入域是否能成功匹配一個正則表達式
  maxLength       檢驗值的長度是否小于等于給定的最大長度
  minLength       檢驗值的長度是否大于等于給定的最小長度
  range        檢驗值的范圍是否在最大值和最小值之間
  required        檢驗輸入域是否為不為空,或不包含空格值的長度是否大于零
  表一
  正像你在表一中看到的,Validator框架提供了Web應用程序需要的大多數(shù)的驗證規(guī)則。你可以使用這些現(xiàn)有的驗證規(guī)則來創(chuàng)建自己驗證配置文件。盡管這樣,也正如我們前面提到的,和后面要講到的,你可以根據(jù)你的需要隨意的增加更多的Validator。
  
  現(xiàn)在,讓我們來討論如何在一個基于Struts架構(gòu)的應用程序中配置使用這些基本的Validator。
  使Validator框架具有彈性的原因在于所有的驗證規(guī)則和其具體細節(jié)都是通過在外部文件中配置聲明實現(xiàn)的。你的應用程序并不必要知道這些具體的驗證規(guī)則。這一特征使得規(guī)則集的發(fā)生擴展和修改時,你并不用去動你應用程序的源代碼。這一點對你要進行每次的個性化安裝或當需求發(fā)生變化時來說是非常重要的。
  假如你使用Struts1.1的Validator框架,你會用到這樣兩個配置文件,一個叫validator- rules.xml,另一個叫validation.xml;其實你也可以隨意的給他們命名,甚至可以把它們合并成一個XML文件。但是,你還是最好把它們分開,因為它們各有各的用途。
  
  注重:假如你從Jakarta網(wǎng)站上下載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下載到。我們并不想花太多的時間放在研究這個文件的具體細節(jié)上,我們在這兒只作一些基本的介紹。
  validator-rules.xml文件中最重要的元素包含在<validator>元素中,例如,例一:
  例一:一個簡單的validator-rules.xml文件
  <form-validation>
   <global>
   <validator
     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"/>
    
   <validator name="minlength"
     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"/>
   </global>
  </form-validation>
  
  
  
  應用程序使用的每個Validator對應一個<validator>元素。在例一中給大家展示了兩個Validator,一個是請求Validator,另一個是最小長度Validator。<validator>元素支持許多屬性。這些屬性是必要的,用于告知框架這個Validator應當調(diào)用哪個正確的類和方法。例如,例一中的請求Validator元素表明這個Validator將調(diào)用org.apache.struts.util.StrutsValidator類的validateRequest()方法。Validator也可能要依靠另一個Validator,如例一中的最小長度的Validator就是這樣一個例子,它包含一個depends屬性,用它來表示這個Validator將依靠于請求Validator。msg屬性用一個鍵值指定一個資源綁定,框架將用它來生成正確的錯誤信息。資源綁定的使用有益于錯誤信息的本地化。
    <validator>元素還支持<javascript>子元素,答應你指定一個客戶端運行的javascript函數(shù)。這樣服務(wù)器端和客戶端驗證可以在同一處指定,這使應用程序的維護變得簡單。
  
  validation.xml文件
  Validator框架的第二個配置文件就是這個叫validation.xml的文件。其實你可以隨意把它命名為你喜歡的任何名字,也

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南充市| 石屏县| 峨边| 廊坊市| 清水河县| 宾川县| 麻城市| 句容市| 元朗区| 浦江县| 信宜市| 锦屏县| 鹿泉市| 镇赉县| 都昌县| 高青县| 平南县| 泾川县| 德昌县| 平果县| 曲沃县| 元江| 芮城县| 竹北市| 宣城市| 晋宁县| 红桥区| 浠水县| 电白县| 义乌市| 贵港市| 钟祥市| 道孚县| 石棉县| 邻水| 阿拉善右旗| 金湖县| 元朗区| 道真| 恭城| 青冈县|