亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用 Validator 簡化 Struts 的開發過程

2019-11-18 15:55:25
字體:
來源:轉載
供稿:網友

  用Validator(驗證器)提供的豐富的內置驗證方法簡化Struts的開發過程。
  
  Struts框架的一個主要好處是它提供了對接收到的表單數據進行驗證的內置界面。假如有任何驗證失敗,則應用程序都會重新顯示Html表單,這樣就可以改正無效的數據了。假如驗證成功,則處理過程會繼續進行。Struts框架的簡單驗證界面會減少與處理數據驗證有關的令人頭疼的事情,這樣你就可以把精力集中到驗證代碼上,而不是放到捕捉數據、重新顯示不完整或無效數據的技巧上。
  
  但是,Struts內置的驗證界面也有缺點。例如,在整個應用程序中驗證代碼經常會大量重復,因為許多域需要相同的驗證邏輯。對一些相似字段的驗證邏輯進行任何修改都要求在幾個地方修改代碼,還要重新編譯受影響的代碼。為了解決這個問題并增強Struts驗證界面的功能,作為Struts的第三方附加件創建了Validator框架。后來,Validator被集成到核心Struts代碼庫中,并從Struts中分離出來,現在它是一個獨立的Jakarta Commons項目。雖然Validator是一個獨立的框架,但它仍能與其他程序封裝在一起后提供,并與Struts無縫集成。
  
  Validator概述
  沒有Validator,你就不得不編寫驗證表單數據所需的全部代碼,并把它放入Form Bean對象的validate( )方法中。對于想在其上進行數據驗證的每個Form Bean域來說,都需要編寫邏輯代碼來實現驗證。此外,你還必須編寫代碼來存儲驗證失敗時的出錯消息。
  
  有了Validator,你就不必在Form Bean中編寫用于驗證或存儲錯誤消息的任何代碼。相反,Form Bean提供了Validator的一個ActionForm子類,它提供驗證或存儲錯誤消息的功能。
  
  可把Validator框架作為一個可用于Form Bean驗證的可插入的驗證例行程序系統來進行安裝。每個驗證例行程序都只是一個java方法,負責執行特定類型的驗證任務,驗證可能通過,也可能失敗。 默認情況下,Validator與幾個有用的驗證例行程序封裝在一起來提供,這些例行程序能滿足大多數情況下的驗證要求。但是,假如Validator框架沒有提供你需要的驗證例行程序,那么你可以自己創建定制的驗證例行程序,并將它插入到該框架中。此外,Validator還支持服務器端和客戶端(javascript)的驗證,而Form Bean只提供服務器端驗證界面。
  
  Validator使用兩個xml配置文件來分別確定安裝哪個驗證例行程序和如何將它們應用于給定的應用程序。第一個配置文件validator-rules.xml說明應該被插入到框架中的驗證例行程序,并提供每個驗證的邏輯的名稱。validator-rules.xml文件還定義了每個驗證例行程序的客戶端Javascript代碼??梢耘渲肰alidator讓它把這個JavaScript代碼發送到瀏覽器上,這樣驗證就可以在客戶端和服務器端進行了。
  
  第二個配置文件validation.xml確定哪個驗證例行程序應用到哪個Form Bean。文件中的定義使用struts-config.xml文件給出的Form Bean的邏輯名稱以及validator-rules.xml文件給出的驗證例行程序的邏輯名稱,以便把二者關聯起來。
  
  使用Validator框架包括啟用Validator插件、配置Validator的兩個配置文件,以及創建提供Validator的ActionForm子類的Form Beans。下面具體解釋如何配置和使用Validator。
  
  啟用Validator插件
  雖然Validator框架是與Struts封裝在一起提供的,但在默認狀況下Validator并不被啟用。為了啟用Validator,要向你的應用程序的struts-config.xml文件中添加下面的插件定義。
  
  <!-- Validator Configuration -->
  <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為你的應用程序加載并初始化Validator插件。在初始化時,該插件裝入由路徑名屬性指定的、用逗號分隔的Validator配置文件清單。每個配置文件的路徑應該用與Web應用程序的相關的路徑來指定,如前面的例子所示。
  
  請注重,你的應用程序的struts-config.xml文件必須與Struts Configuration Document Type Definition(Struts配置文檔類型定義,DTD)一致,后者規定文件中元素出現的順序。所以,你必須把Validator插件定義放到該文件的適當位置。確保文件中元素適當排列的最簡便方法就是使用諸如Struts Console的工具,它自動格式化你的配置文件,以便與DTD保持一致。
  
  配置validator-rules.xml
  Validator框架可以設置為可插入系統,其驗證例行程序僅僅是插入到該系統中執行具體驗證的Java方法。validator-rules.xml文件說明性地插入Validator用于執行驗證的驗證例行程序中。Struts示例應用程序帶有這個文件的預配置拷貝。在大多數情況下,你不必修改這個預配置拷貝,除非你要向該框架中添加自己定制的驗證。
  
  清單1 是一個示例validator-rules.xml文件,說明如何將驗證例行程序插入到Validator中。validator-rules.xml文件中的每個驗證例行程序都有自己的定義,它用validator標記聲明,利用name屬性為該驗證例行程序指定邏輯名,并指定該例行程序的類和方法。該例行程序的邏輯名稱供該文件中的其他例行程序以及validation.xml文件中的驗證定義用于引用該例行程序。
  
  請注重,validator標記放在javascript的標記中,javascript標記用于定義客戶端JavaScript代碼,以便在客戶端執行與服務器端相同的驗證。
  
  提供的驗證程序
  默認情況下,Validator中包括幾個基本驗證例行程序,你可以用它們來處理大多數驗證問題。這些例行程序具有邏輯名稱,如required(用于輸入要求的值)、CreditCard(用于輸入信用卡號碼值)、email(用于輸入電子郵件地址值),等等。
  
  創建Form Bean
  為了使用Validator,你的應用程序的Form Bean必須歸到Validator的ActionForm的某一子類,而不是ActionForm本身。Validator的ActionForm子類提供了ActionForm的validate( )方法(它嵌入到Validator框架中)的實施過程。你不必從頭編寫驗證代碼并把它投入validate( )方法中,相反,可以完全忽略該方法,因為Validator為你提供了驗證代碼。
  
  與Struts提供的核心功能相類似,Validator提供給你兩種可供選擇的方法來創建Form Bean。 你可以選擇的第一種方法就是像下面這樣創建一個特定的Form Bean對象:
  
  package com.jamesholmes.minihr;
  
  import org.apache.struts.validator
  .ValidatorForm;
  
  public class LogonForm extends ValidatorForm {
   private String username;
   private String passWord;
   
   public String getUsername() {
    return username;
   }
   
   public void setUsername(String
  username) {
    this.username = username;
   }
  
   public String getPassword() {
    return password;
   }
  public void setPassword(String
  password) {
    this.password = password;
   }
  }
  
  這個類與你不是用Validator所創建的類相似,但它提供ValidatorForm而不是ActionForm。這個類也不提供ActionForm的空reset( )和validate( )方法的實施過程,因為ValidatorForm提供了相應過程。
  
  在struts-config.xml文件中配置這個特定Form Bean的方法與配置正則Form Bean的方法相同:
  
  
  <form-beans>
   <form-bean name="logonForm"
        type="com.jamesholmes
   .minihr.LogonForm"/>
  </form-beans>
  
  用表單標記的name屬性給特定Form Bean指定的邏輯名是在定義validation.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>
   <formset>
    <form name="logonForm">
     <field property="username"
        depends="required">
      <arg0 key="prompt.username"/>
     </field>
    </form>
   </formset>
  </form-validation>
  
  Validator使用該表單標記的name屬性的值將驗證定義與要應用這些定義的Form Bean的名稱相匹配。
  
  創建Form Bean時可以選擇的第二種方法是在struts-config.xml文件中定義一個動態Form Bean,如下所示:
  
  <form-beans>
   <form-bean name="logonForm"
        type="org.apache
  .struts.validator.DynaValidatorForm">
    <form-property name="username"
        type="java.lang.String"/>
    <form-property name="password"
        type="java.lang.String"/>
   </form-bean>
  </form-beans>
  
  動態Form Bean不要求創建特定的Form Bean對象;相反,要定義Form Bean應該具有的屬性和類型,而Struts為你動態創建Form Bean。 Validator答應你使用這個概念,就像在核心Struts中使用這個概念一樣。與使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄色一区二区在线| 亚洲成人久久网| www.午夜精品| 国产精品最新在线观看| 国产精品嫩草视频| 日韩成人中文字幕| 日韩av在线导航| 久久国内精品一国内精品| 久久夜色精品国产欧美乱| 久久免费视频这里只有精品| 久久精品国产成人| 中文字幕在线看视频国产欧美| 92福利视频午夜1000合集在线观看| 亚洲人成电影在线观看天堂色| 国产精品一二三在线| 中文字幕日韩欧美精品在线观看| 最新91在线视频| 国产国产精品人在线视| 亚洲人免费视频| 国产极品精品在线观看| 久久久久国色av免费观看性色| 国产精品高潮呻吟久久av黑人| 亚洲人成啪啪网站| 91日本视频在线| 91免费在线视频网站| 久久精品影视伊人网| 国产一区二区精品丝袜| 国产精品香蕉av| 国产日产欧美a一级在线| 日韩在线视频线视频免费网站| 欧美午夜精品在线| 亚洲国产97在线精品一区| 亚洲国产欧美日韩精品| 欧美日韩综合视频网址| 日韩电影在线观看免费| 国产精品爽爽爽爽爽爽在线观看| 国产成人精品最新| 亚洲国产精品久久精品怡红院| 操91在线视频| 欧美日韩在线视频一区二区| 欧美性色19p| 欧美视频一区二区三区…| 国产精品成久久久久三级| 成人一区二区电影| 亚洲欧美日韩国产中文| 亚洲一区精品电影| 国产一区二区黑人欧美xxxx| 午夜精品一区二区三区视频免费看| 久久久久久高潮国产精品视| 视频在线一区二区| 在线日韩av观看| 国产精品激情av电影在线观看| 久久久久久久久久久久av| 91天堂在线视频| 久久久久久久久综合| 高跟丝袜欧美一区| 久久久www成人免费精品张筱雨| 久久五月天色综合| 日韩最新av在线| 午夜精品福利电影| 亚洲欧美国产视频| 国产精品久久久久久久久久东京| 欧美在线免费观看| 欧美一区二区三区精品电影| 91色琪琪电影亚洲精品久久| 欧美午夜激情在线| 亚洲天堂影视av| 91av视频导航| 久久久亚洲影院| 亚洲人成网站在线播| 国产精品久久久久不卡| 亚洲欧洲视频在线| 国产中文字幕亚洲| 国产精品色午夜在线观看| 亚洲一区999| 成人激情视频在线观看| 欧美黑人视频一区| 国产精品第一页在线| 亚洲天堂开心观看| 91色视频在线观看| 国产在线日韩在线| 日韩精品久久久久久久玫瑰园| 在线播放亚洲激情| 亚洲第一av在线| 一区二区欧美亚洲| 国产深夜精品福利| 欧美另类交人妖| 亚洲人午夜精品| 亚洲精品第一页| 成人网页在线免费观看| 欧美激情一区二区三级高清视频| 91精品久久久久久久久青青| 久久亚洲精品视频| 91国在线精品国内播放| 亚洲视频视频在线| 91影院在线免费观看视频| 成人久久一区二区| 久久精品国产久精国产一老狼| 亚洲精品欧美一区二区三区| 日韩欧美中文字幕在线观看| 亚洲第一区中文字幕| 亚洲美女www午夜| 午夜精品美女自拍福到在线| 欧美电影《睫毛膏》| 亚洲性视频网址| 91精品国产沙发| 国产精品国产亚洲伊人久久| 欧美中文字幕视频在线观看| 另类色图亚洲色图| 国产不卡av在线免费观看| 成人福利视频在线观看| 欧美尺度大的性做爰视频| 成人乱色短篇合集| 2024亚洲男人天堂| 一个人看的www久久| 色悠久久久久综合先锋影音下载| 欧美激情小视频| 亚洲人成电影在线观看天堂色| 欧美日韩国产综合新一区| 国产国语刺激对白av不卡| 欧美高清一级大片| 日韩一区二区三区在线播放| 国产精品第七十二页| 国产精品久久久久久久久久久久| 奇门遁甲1982国语版免费观看高清| 国产精品99久久久久久www| 日韩在线视频二区| 久久国产精品久久久久久久久久| 国产精品久久久91| 欧美精品午夜视频| 亚洲成人激情在线| 日韩亚洲精品电影| 欧美成人免费全部观看天天性色| 国产精品自产拍高潮在线观看| 亚洲a一级视频| 国产精品视频男人的天堂| 亚洲精品久久久一区二区三区| 久久九九国产精品怡红院| 亚洲人成亚洲人成在线观看| 91在线|亚洲| 91日本视频在线| 欧美成人午夜免费视在线看片| 精品国产电影一区| 欧美日韩国产中字| 欧美富婆性猛交| 日韩电视剧在线观看免费网站| 欧美一级在线播放| 北条麻妃一区二区在线观看| 日韩久久精品电影| 久久精品免费播放| 久久韩剧网电视剧| 国产乱人伦真实精品视频| 日韩中文字幕国产精品| 精品视频偷偷看在线观看| 国产丝袜高跟一区| 国外成人性视频| 欧美网站在线观看| 欧美一级在线亚洲天堂| 疯狂蹂躏欧美一区二区精品| 久久久精品久久久| xxx欧美精品| 色婷婷亚洲mv天堂mv在影片| 日韩中文字幕亚洲| 国产v综合ⅴ日韩v欧美大片|