專利名稱:數(shù)據(jù)驗證方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)驗證方法和裝置。
背景技術(shù):
在網(wǎng)絡(luò)相關(guān)技術(shù)領(lǐng)域中,經(jīng)常需要對用戶輸入的信息進行驗證。在常見的信息驗 證方法中,對每個需要驗證的字段逐個進行。例如,當判斷存在A、B、C三個字段需要驗證 時,首先利用驗證方法A對字段A進行驗證,接著利用驗證方法B對字段B進行驗證,最后 利用驗證方法C對字段C進行驗證。因此,當需要驗證若干字段時,需要在后天維護大量的 驗證方法,導(dǎo)致維護成本增加。在上述驗證方法中采用多分支驗證流程,字段越多,分支越多,系統(tǒng)需要維護的驗 證方法也越多。系統(tǒng)會變得臃腫而且維護困難,并且難以擴展,而且效率也不高。為了克服上述驗證方法存在的問題,在申請?zhí)枮镃N 200810227933.9的專利申請 中公開了一種數(shù)據(jù)驗證方法來提高可維護性和可擴展性。在申請?zhí)枮镃N 200810227933. 9的專利申請公開的方法中,采用統(tǒng)一驗證標簽和 統(tǒng)一驗證接口來實現(xiàn)統(tǒng)一的數(shù)據(jù)驗證機制。該方法首先利用統(tǒng)一驗證標簽isNameExist來 標識所有需要進行數(shù)據(jù)重復(fù)性驗證的字段,然后獲取需要進行重復(fù)性驗證的字段的統(tǒng)一驗 證接口,并且調(diào)用統(tǒng)一驗證接口所對應(yīng)的驗證規(guī)則對需要進行數(shù)據(jù)重復(fù)性驗證的字段進行 驗證。然而,在上述驗證方法中,仍然存在以下主要問題。第一,由于對多個字段采用一 個統(tǒng)一驗證接口,所以無法對該多個字段中的每一個字段采用最適合的驗證規(guī)則,例如在 各個驗證中可能存在很多名字為name的字段信息,但是每一個驗證邏輯都不完全相同,所 以統(tǒng)一驗證接口很難對這些字段信息采用最適合的驗證規(guī)則。第二,本方法仍然通過參照 統(tǒng)一驗證標簽而對需要驗證的每個字段調(diào)用統(tǒng)一驗證接口,從而降低了驗證效率。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中的上述缺點和問題而提出本發(fā)明。根據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)驗證方法,所述方法可以包括接收待驗證信息;利用所接收的待驗證信息構(gòu)建驗證對象; 獲取與所述驗證對象相對應(yīng)的驗證規(guī)則配置文件;以及利用所獲取的驗證規(guī)則配置文件對所述驗證對象進行驗證。根據(jù)本發(fā)明的該方面,所述驗證規(guī)則配置文件可以包括多個驗證規(guī)則,所述多個 驗證規(guī)則中的一個或多個與所述驗證對象的一個屬性相關(guān)聯(lián)。所述多個驗證規(guī)則可以包括 默認驗證規(guī)則和自定義驗證規(guī)則。此外,當對所述驗證對象驗證失敗時,可以輸出錯誤信息。所述錯誤信息可以源自 所述驗證規(guī)則配置文件。
根據(jù)本發(fā)明的另一個方面,提供了一種數(shù)據(jù)驗證裝置,所述裝置可以包括驗證數(shù)據(jù)輸入單元,用于接收待驗證信息;驗證對象構(gòu)建單元,用于接收從所述驗證數(shù)據(jù)輸入單元提交的所述待驗證信息并 且利用所述待驗證信息構(gòu)建驗證對象;驗證規(guī)則設(shè)置單元,用于維護至少一個驗證規(guī)則配置文件;以及驗證單元,用于從所述驗證規(guī)則設(shè)置單元獲取與由所述驗證對象構(gòu)建單元構(gòu)建的 所述驗證對象相對應(yīng)的驗證規(guī)則配置文件,并且利用所獲取的驗證規(guī)則配置文件對所述驗 證對象進行驗證。根據(jù)本發(fā)明的該方面,所述驗證規(guī)則配置文件可以包括多個驗證規(guī)則,所述多個 驗證規(guī)則中的一個或多個與所述驗證對象的一個屬性相關(guān)聯(lián)。所述多個驗證規(guī)則可以包括 默認驗證規(guī)則和自定義驗證規(guī)則。此外,所述數(shù)據(jù)驗證裝置可以進一步包括驗證結(jié)果處理單元,并且當所述驗證單 元對所述驗證對象驗證失敗時,輸出錯誤信息。而且,所述錯誤信息源自所述驗證規(guī)則配置 文件。
通過下面結(jié)合附圖進行的描述,本發(fā)明一些示范性實施例的上述和其他方面、特 征和優(yōu)點對于本領(lǐng)域技術(shù)人員來說將變得顯而易見,其中圖1是圖示根據(jù)本發(fā)明的數(shù)據(jù)驗證裝置的框圖;圖2是圖示用于根據(jù)本發(fā)明的數(shù)據(jù)驗證裝置的驗證配置文件的示意圖;以及圖3是圖示根據(jù)本發(fā)明的數(shù)據(jù)驗證方法的流程圖。
具體實施例方式提供參考附圖的下面描述以幫助全面理解本發(fā)明的示范性實施例。其包括各種細 節(jié)以助于理解,而應(yīng)當將它們認為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當認識 到,可以對這里描述的實施例做出各種改變和修改,而不會背離本發(fā)明的范圍和精神。同 樣,為了清楚和簡明,省略了對公知功能和結(jié)構(gòu)的描述。下面將參考附圖詳細描述本發(fā)明。圖1是圖示根據(jù)本發(fā)明的數(shù)據(jù)驗證裝置的框圖。如圖1中所示,數(shù)據(jù)驗證裝置包括 驗證數(shù)據(jù)輸入單元110、驗證對象構(gòu)建單元120、驗證單元130以及驗證規(guī)則設(shè)置單元140。驗證數(shù)據(jù)輸入單元110可以生成用于輸入驗證信息的圖形用戶界面。所生成的圖 形用戶界面可以包括供用戶輸入各種信息的多個字段,以用戶注冊為例,驗證數(shù)據(jù)輸入單 元110可以生成用戶注冊頁面,并且用戶注冊界面可以包括用戶名、密碼、郵箱、驗證碼等 字段。在用戶向圖形用戶界面輸入各種信息后,驗證數(shù)據(jù)輸入單元110可以將所輸入的各 種信息提交給驗證對象構(gòu)建單元120。在上述用戶注冊示例中,可以在用戶向用戶注冊界面 輸入各種信息后,通過點擊用戶注冊界面上的“注冊”按鈕而將所輸入的各種信息提交給驗 證對象構(gòu)建單元120。在接收到自驗證數(shù)據(jù)輸入單元110提交的信息后,驗證對象構(gòu)建單元120根據(jù)所 接收的信息構(gòu)建驗證對象,例如可以通過將在每個字段輸入的信息設(shè)置為驗證對象的對應(yīng)
4屬性的屬性值來構(gòu)建驗證對象。驗證單元130用于對驗證對象構(gòu)建單元120構(gòu)建的驗證對象進行驗證。驗證單元 130可以從驗證規(guī)則配置單元140獲取與所構(gòu)建的驗證對象相對應(yīng)的驗證規(guī)則配置文件。 其中,驗證規(guī)則配置單元140可以維護至少一個驗證規(guī)則配置文件,所述至少一個驗證規(guī) 則配置文件通過文件名而與驗證對象相對應(yīng)。此外,每個驗證規(guī)則配置文件可以包括多個 驗證規(guī)則,所述多個驗證規(guī)則中的一個或多個與所述驗證對象的一個屬性相關(guān)聯(lián),隨后將 參考圖2詳細描述多個驗證規(guī)則中的一個或多個如何與所述驗證對象的一個屬性相關(guān)聯(lián)。驗證單元130可以采用各種方式從驗證規(guī)則配置單元140獲取與所構(gòu)建的驗證對 象相對應(yīng)的驗證規(guī)則配置文件,例如可以根據(jù)以下代碼示例來獲取與所構(gòu)建的驗證對象相 對應(yīng)的驗證規(guī)則配置文件〈beanid =“formService“class =“ com. jd. website, commons, validator. DefaultFormService " >〈property name =〃 fiIePath" ><list>< !—配置文件一><value>form/registerForm. xml</value></list></property></bean>其中,通過id = 〃 formService “來指示驗證對象名稱,并且通過form/
registerForm. xml來指示該驗證對象所對應(yīng)的驗證規(guī)則配置文件。當然驗證單元130從驗證規(guī)則配置單元140獲取與所構(gòu)建的驗證對象相對應(yīng)的驗 證規(guī)則配置文件不限于上述方式。在獲取驗證規(guī)則配置文件后,驗證單元130根據(jù)在驗證規(guī)則配置文件中為驗證對 象的每個屬性設(shè)置的驗證規(guī)則(下面將參考圖2進行描述)對驗證對象進行驗證,并且輸 出驗證結(jié)果。例如,當對驗證對象驗證成功后,驗證結(jié)果可以為“true”,而當對驗證對象驗 證失敗后,驗證結(jié)果可以為驗證錯誤信息,該驗證錯誤信息可以是來自驗證規(guī)則配置文件。數(shù)據(jù)驗證裝置可以進一步包括驗證結(jié)果處理單元150,其根據(jù)來自驗證單元130 的驗證結(jié)果進行處理。例如,當驗證成功時,可以繼續(xù)其它過程,例如在用戶注冊示例中,可 以轉(zhuǎn)到僅允許注冊用戶查看的界面中;當驗證失敗時,可以輸出驗證錯誤信息,例如將作為 驗證結(jié)果的驗證錯誤信息二次渲染后回滾到前端并顯示錯誤信息。下面,參考圖2描述驗證配置文件。圖2圖示用于根據(jù)本發(fā)明的數(shù)據(jù)驗證裝置的 驗證規(guī)則配置文件的示意圖。圖2所示的驗證配置文件包括用于對驗證對象的每個屬性配 置相應(yīng)的驗證規(guī)則的配置塊1-配置塊4。配置塊1設(shè)置了與驗證對象的屬性“username”相關(guān)聯(lián)的驗證規(guī)則,其中通過 <validator required = “ true “ > j^SH亥屬個生不能為空,iE過〈validator minLength ="4〃 maxLength = “ 20〃 >設(shè)置該屬性的長度必須大于4位并且小于20位。配置塊2設(shè)置了與驗證對象的屬性“password”相關(guān)聯(lián)的驗證規(guī)則,其中通過<validator required = “ true “ > j^SH亥屬個生不能為空,iE過〈validator minLength ="6〃 maxLength = “ 16〃 >設(shè)置該屬性的長度必須大于6位并且小于16位。配置塊3設(shè)置了與驗證對象的屬性“email”相關(guān)聯(lián)的驗證規(guī)則,其中通過 <validator required = “ true “ > 亥屬個生f 倉泛為空,iEii〈validator maxLength =“50 “ >設(shè)置該屬性的長度必須小于50個字符,通過〈validator pattern =““[A-Za-zO-9] + ([-+. J \w*) *i\w+ ([-. ] \w+) \w+([-. ] \w+) * " > 設(shè)置對該屬性進 行正則表達式校驗。配置塊4設(shè)置了與驗證對象的屬性“checkCode”相關(guān)聯(lián)的驗證規(guī)則,其中通過 <validator required = " true"type = " com. jd. website, apply, web. validator. CheckCode Validator" >設(shè)置對該屬性進行自定義驗 證(稍后將詳細描述)。此外,配置塊1-配置塊4分別通過“message”節(jié)點定義了在驗證失敗時要輸出的 錯誤消息,其中的“$ {displayName},,對應(yīng)于屬性的名稱。從上面的描述可知,驗證對象的每個屬性的驗證規(guī)則是通過“validator”節(jié)點中 的“type”屬性來設(shè)置的,在本發(fā)明中采用了 4個默認驗證器(與驗證規(guī)則的含義等同)如 下
類名作用處理標記com.jd.website.commons.validator.c heck.DefaultRequiredValidator為空校驗requiredcom.jd.website.commons.validator.c heck.DefaultLengthValidator長度校驗minLength,maxLengthcom.jd.website.commons.validator.c heck.DefaultPatternValidator正則表達式校驗patterncom.jd.website.commons.validator.c heck.DefaultValueLength Validator比較校驗minValue5maxValue當不適合采用上述4個默認驗證器中的任何一個時,可以采用自定義驗證器,例 如上面的配置塊4中采用的自定義驗證器??梢愿鶕?jù)需要任意定義自定義驗證器,下面的 示例是定義了在配置塊4中采用的驗證規(guī)則的自定義驗證器package com. jd. website, apply, web. validator ;import org. apache, commons, lang. StringUtils ;import com. jd. website, commons, validator, check. DefaultValidator ;import com. jd. website, commons, validator, form. Field ;public class CheckCodeValidator extends DefaultValidator{private final static String CHECK—CODE =〃 8888"; Overrideprotected boolean validator(Field field){
String value = field. getStringValue ();if (StringUtils. isNotBlank(value)MStringUtils. equals(CHECK_C0DE,value)) {return true ;}return false ;}}上面的示例定義了僅接受驗證碼“8888”的自定義驗證器CheckCodeValidator。
可以以類似的方式定義其它自定義驗證器。此外,為了增加驗證配置規(guī)則的適用性、靈活性等,可以通過繼承方式來實現(xiàn)對相 似驗證對象的驗證規(guī)則的配置。例如,當在上面的用戶注冊示例中,需要增加驗證項“年齡”而其它驗證項的驗證 邏輯保持不變,則可以通過以下來實現(xiàn)< ? xml version = " 1.0〃 encoding = " GBK" ? ><forms>< !—注冊一><form name = 〃 registerForm“ ></form><form name =,,registerForm2,,extends =,,registerForm,,>〈field name = ” age” dispIayName =” 年齡”〉<validator required =,,true,,><message>$ {displayname}不能為空! </message>〈/validator〉......</field></form></forms>通過以上描述可以看出,根據(jù)本發(fā)明的數(shù)據(jù)驗證裝置通過驗證規(guī)則配置文件詳細
精確地定義了與對應(yīng)驗證對象的每個屬性相關(guān)聯(lián)的驗證規(guī)則。首先,由于一個或多個驗證 規(guī)則與每個屬性相關(guān)聯(lián),所以可以對驗證對象的每個屬性進行最適當?shù)尿炞C。此外,當需要 改變驗證邏輯時,僅需要改變配置文件中的驗證規(guī)則。第三,當存在多個注冊入口時,只需 復(fù)用配置文件即可。因此,提高了驗證的可復(fù)用性和可維護性。下面將參照圖3描述根據(jù)本發(fā)明的數(shù)據(jù)驗證方法。圖3是圖示根據(jù)本發(fā)明的數(shù)據(jù) 驗證方法的流程圖。在步驟S310,接收待驗證信息。待驗證信息可以是用戶通過在圖形用戶界面的每 個字段中輸入的信息。其具體過程可以參考關(guān)于驗證數(shù)據(jù)輸入單元110進行的描述。在步驟S320,利用所接收的待驗證信息構(gòu)建驗證對象。例如,可以通過將通過在圖 形用戶界面的每個字段輸入的信息設(shè)置為驗證對象的對應(yīng)屬性的屬性值來構(gòu)建驗證對象。在步驟S330,獲取與所構(gòu)建的驗證對象相對應(yīng)的驗證規(guī)則配置文件。例如可以通過驗證規(guī)則配置文件的文件文件名獲取與驗證對象相對應(yīng)的驗證規(guī)則配置文件。如之前所 述,每個驗證規(guī)則配置文件可以包括多個驗證規(guī)則,所述多個驗證規(guī)則中的一個或多個與 所述驗證對象的一個屬性相關(guān)聯(lián)。其具體過程可以參考關(guān)于驗證規(guī)則配置單元140以及圖 2進行的描述。在步驟S340,利用所獲取的驗證規(guī)則配置文件對所述驗證對象進行驗證。其具體 過程可以參考關(guān)于驗證單元130以及圖2進行的描述。在步驟S350,根據(jù)驗證結(jié)果進行處理了。例如,當驗證成功時,可以繼續(xù)其它過程, 例如在用戶注冊示例中,可以轉(zhuǎn)到僅允許注冊用戶查看的界面中;當驗證失敗時,可以輸出 驗證錯誤信息,例如將作為驗證結(jié)果的驗證錯誤信息二次渲染后回滾到前端并顯示錯誤信 肩、ο應(yīng)指出的是,上面分別對本發(fā)明的裝置和方法實施例進行了描述,但是對一個實 施例描述的細節(jié)也可應(yīng)用于另一個實施例。以上結(jié)合具體實施例描述了本發(fā)明的基本原理,但是,需要指出的是,對本領(lǐng)域的 普通技術(shù)人員而言,能夠理解本發(fā)明的方法和裝置的全部或者任何步驟或者部件可以以軟 件、硬件、固件或者它們的組合加以實現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說明 的情況下運用他們的基本編程技能就能實現(xiàn)的。因此,本發(fā)明的目的還可以通過在任何計算裝置上運行一個軟件模塊或者一組軟 件模塊來實現(xiàn)。所述計算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以僅僅通 過提供包含實現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來實現(xiàn)。也就是說,這樣的程序 產(chǎn)品也構(gòu)成本發(fā)明,并且存儲有這樣的程序產(chǎn)品的存儲介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲 介質(zhì)可以是任何公知的存儲介質(zhì)或者將來所開發(fā)出來的任何存儲介質(zhì)。雖然本說明書包含許多特定實施方式細節(jié),但是不應(yīng)當將這些細節(jié)解釋為對任何 發(fā)明或可以主張的內(nèi)容的范圍的限制,而應(yīng)當解釋為對可以特定于特定發(fā)明的特定實施例 的特征的描述。還可以將在本說明書中在分離的實施例的情境中描述的某些特征組合在單 個實施例中實現(xiàn)。相反地,也可以將在單個實施方式的情境中描述的各個特征分離地在多 個實施方式中實現(xiàn)或在任何適當?shù)淖咏M合中實現(xiàn)。此外,盡管可能在上面將特征描述為在 某些組合中起作用,甚至最初主張如此,但是可以在一些情況下將來自所主張的組合的一 個或多個特征從組合中刪去,并且可以將所主張的組合指向子組合或者子組合的變體。類似地,雖然在附圖中以特定次序描繪了操作,但是不應(yīng)當將這理解為需要以所 示的特定次序或者以連續(xù)次序執(zhí)行這樣的操作、或者需要執(zhí)行所有圖示的操作才能達到期 望的結(jié)果。在某些情況下,多任務(wù)以及并行處理可以是有利的。此外,不應(yīng)當將在上述實施 例中的各種系統(tǒng)組件的分離理解為在所有實施例中均需要這樣的分離,而應(yīng)當理解的是, 通??梢詫⑺枋龅某绦蚪M件和系統(tǒng)集成到一起成為單個軟件產(chǎn)品或封裝為多個軟件產(chǎn)
P
ΡΠ O計算機程序(也稱作程序、軟件、軟件應(yīng)用、腳本或代碼)可以以任何形式的編程 語言編寫,所述編程語言包括編譯或解釋語言、或者說明性或過程語言,并且其可以以任何 形式部署,包括作為獨立程序或作為模塊、組件、子程序或適于在計算環(huán)境中使用的其它單 元。計算機程序沒有必要對應(yīng)于文件系統(tǒng)中的文件??梢詫⒊绦虼鎯υ诒3制渌绦蚧驍?shù) 據(jù)的文件(例如,存儲在標記語言文檔中的一個或多個腳本)的一部分、專用于討論中的程序的單個文件或者多個協(xié)調(diào)文件(例如,存儲一個或多個模塊、子程序或部分代碼的文件)中。 上述具體實施方式
,并不構(gòu)成對本發(fā)明保護范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明 白的是,取決于設(shè)計要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何 在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進等,均應(yīng)包含在本發(fā)明保護范圍 之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)驗證方法,所述方法包括接收待驗證信息;利用所接收的待驗證信息構(gòu)建驗證對象;獲取與所述驗證對象相對應(yīng)的驗證規(guī)則配置文件;以及利用所獲取的驗證規(guī)則配置文件對所述驗證對象進行驗證。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述驗證規(guī)則配置文件包括多個驗證規(guī)則,所述 多個驗證規(guī)則中的一個或多個與所述驗證對象的一個屬性相關(guān)聯(lián)。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述多個驗證規(guī)則包括默認驗證規(guī)則和自定義 驗證規(guī)則。
4.根據(jù)權(quán)利要求1所述的方法,其中,當對所述驗證對象驗證失敗時,輸出錯誤信息。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述錯誤信息源自所述驗證規(guī)則配置文件。
6.一種數(shù)據(jù)驗證裝置,所述裝置包括驗證數(shù)據(jù)輸入單元,用于接收待驗證信息;驗證對象構(gòu)建單元,用于接收從所述驗證數(shù)據(jù)輸入單元提交的所述待驗證信息并且利 用所述待驗證信息構(gòu)建驗證對象;驗證規(guī)則設(shè)置單元,用于維護至少一個驗證規(guī)則配置文件;以及驗證單元,用于從所述驗證規(guī)則設(shè)置單元獲取與由所述驗證對象構(gòu)建單元構(gòu)建的所述 驗證對象相對應(yīng)的驗證規(guī)則配置文件,并且利用所獲取的驗證規(guī)則配置文件對所述驗證對 象進行驗證。
7.根據(jù)權(quán)利要求6所述的裝置,其中,所述驗證規(guī)則配置文件包括多個驗證規(guī)則,所述 多個驗證規(guī)則中的一個或多個與所述驗證對象的一個屬性相關(guān)聯(lián)。
8.根據(jù)權(quán)利要求7所述的裝置,其中,所述多個驗證規(guī)則包括默認驗證規(guī)則和自定義 驗證規(guī)則。
9.根據(jù)權(quán)利要求6所述的裝置,其中,所述數(shù)據(jù)驗證裝置進一步包括驗證結(jié)果處理單 元,并且當所述驗證單元對所述驗證對象驗證失敗時,輸出錯誤信息。
10.根據(jù)權(quán)利要求9所述的裝置,其中,所述錯誤信息源自所述驗證規(guī)則配置文件。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)驗證方法和裝置。數(shù)據(jù)方法可以包括接收待驗證信息;利用所接收的待驗證信息構(gòu)建驗證對象;獲取與所述驗證對象相對應(yīng)的驗證規(guī)則配置文件;以及利用所獲取的驗證規(guī)則配置文件對所述驗證對象進行驗證。根據(jù)本發(fā)明的數(shù)據(jù)驗證方法和裝置提高了驗證的可復(fù)用性和可維護性。
文檔編號G06F17/30GK102103639SQ20111003506
公開日2011年6月22日 申請日期2011年1月26日 優(yōu)先權(quán)日2011年1月26日
發(fā)明者姚博 申請人:北京京東世紀貿(mào)易有限公司