欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

高擴(kuò)展性的前后端數(shù)據(jù)校驗(yàn)方法與流程

文檔序號(hào):12271209閱讀:883來源:國知局

本發(fā)明涉及一種數(shù)據(jù)驗(yàn)證方法。



背景技術(shù):

在傳統(tǒng)的信息系統(tǒng)開發(fā)中,服務(wù)端數(shù)據(jù)驗(yàn)證是一個(gè)必須的步驟,除了基本的數(shù)據(jù)格式驗(yàn)證之外,復(fù)雜的業(yè)務(wù)邏輯驗(yàn)證在代碼中也到處存在。隨著業(yè)務(wù)量的增加,大量的重復(fù)驗(yàn)證邏輯充斥在代碼中,一個(gè)簡單的存儲(chǔ)業(yè)務(wù),光驗(yàn)證邏輯就占據(jù)了大量的開發(fā)量,且造成了后期維護(hù)的不便。

目前,服務(wù)端開發(fā)的數(shù)據(jù)驗(yàn)證可以采用的驗(yàn)證方式,如基于XML驗(yàn)證的Apache Commons Validator,基于JSR303的Hibernate Validator。這些框架可以滿足基本的數(shù)據(jù)驗(yàn)證,但是一但需要實(shí)現(xiàn)一些復(fù)雜的自定義業(yè)務(wù)邏輯,往往需要一大堆復(fù)雜的配置,開發(fā)成本也隨之提高。在某些情況下,如果驗(yàn)證邏輯需要在某一個(gè)特定條件下執(zhí)行或者驗(yàn)證邏輯之間也存在依賴關(guān)系,往往的解決方式就是在代碼中加入一堆判斷條件,然后調(diào)用對(duì)應(yīng)的驗(yàn)證邏輯,這會(huì)使得組件的復(fù)用性大大降低。從代碼可讀性與維護(hù)性角度來講,這顯然不是開發(fā)人員所期望的。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是提供一種組件復(fù)用機(jī)制,能夠在特定條件下執(zhí)行某一個(gè)驗(yàn)證組件。

為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種高擴(kuò)展性的前后端數(shù)據(jù)校驗(yàn)方法,其特征在于,一次性驗(yàn)證多個(gè)屬性,每個(gè)屬性指定多個(gè)驗(yàn)證器,驗(yàn)證器在滿足制定條件下運(yùn)行,或在屬性中添加注解,在注解中指定驗(yàn)證器完成一次驗(yàn)證,其中,多個(gè)驗(yàn)證器組成驗(yàn)證器鏈進(jìn)行不同條件下的驗(yàn)證,為驗(yàn)證器鏈中的驗(yàn)證器指定前置驗(yàn)證器和后置驗(yàn)證器,所有驗(yàn)證器共享一個(gè)驗(yàn)證上下文,驗(yàn)證上下文中存儲(chǔ)驗(yàn)證器鏈的共享變量。

優(yōu)選地,驗(yàn)證某個(gè)屬性的方法包括以下步驟:

步驟1、獲取當(dāng)前屬性的驗(yàn)證器鏈,從驗(yàn)證器鏈中取出第一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器;

步驟2、判斷當(dāng)前驗(yàn)證器是否存在,若存在,進(jìn)入步驟3,若不存在,進(jìn)入步驟8;

步驟3、當(dāng)前驗(yàn)證器的運(yùn)行條件是否滿足,若不滿足,則將下一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器,返回步驟2,若滿足,則進(jìn)入步驟4;

步驟4、執(zhí)行當(dāng)前驗(yàn)證器的前置驗(yàn)證器,進(jìn)行前置驗(yàn)證;

步驟5、執(zhí)行當(dāng)前驗(yàn)證器,進(jìn)行當(dāng)前驗(yàn)證;

步驟6、執(zhí)行當(dāng)前驗(yàn)證器的后置驗(yàn)證器,進(jìn)行后置驗(yàn)證;

步驟7、判斷是否需要立即刷新驗(yàn)證結(jié)果,若需要,則進(jìn)入步驟8,若不需要,則將下一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器,返回步驟2;

步驟8、獲取驗(yàn)證結(jié)果后結(jié)束。

本發(fā)明提供的一種高擴(kuò)展性的前后端數(shù)據(jù)校驗(yàn)方法實(shí)現(xiàn)了驗(yàn)證器在不同條件下的復(fù)用,而且增加了驗(yàn)證的靈活性,提高了代碼的簡潔度。

附圖說明

圖1為本發(fā)明的一個(gè)屬性驗(yàn)證的流程圖。

具體實(shí)施方式

下面結(jié)合具體實(shí)施例,進(jìn)一步闡述本發(fā)明。應(yīng)理解,這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應(yīng)理解,在閱讀了本發(fā)明講授的內(nèi)容之后,本領(lǐng)域技術(shù)人員可以對(duì)本發(fā)明作各種改動(dòng)或修改,這些等價(jià)形式同樣落于本申請所附權(quán)利要求書所限定的范圍。

驗(yàn)證組件在本發(fā)明中稱為驗(yàn)證器,是整個(gè)驗(yàn)證組件的執(zhí)行者。在本發(fā)明中,利用多個(gè)驗(yàn)證器組成驗(yàn)證器鏈,以進(jìn)行不同條件下的驗(yàn)證,并且可以定義組合式驗(yàn)證器,為某一個(gè)驗(yàn)證器指定前置驗(yàn)證器和后置驗(yàn)證器。所有驗(yàn)證器共享一個(gè)驗(yàn)證上下文,驗(yàn)證上下文中可以存儲(chǔ)驗(yàn)證器鏈的共享變量??梢栽谀骋粋€(gè)驗(yàn)證過程中強(qiáng)制驗(yàn)證提交以跳過后續(xù)的驗(yàn)證。除此之外,本發(fā)明還提供了注解式的驗(yàn)證方式,只需要將定義的驗(yàn)證器加入到注解屬性中,執(zhí)行時(shí)便可自動(dòng)調(diào)用對(duì)應(yīng)的驗(yàn)證邏輯。下面分別從普通屬性驗(yàn)證與注解式驗(yàn)證來敘述本發(fā)明的實(shí)現(xiàn)方式:

1、普通屬性驗(yàn)證

本發(fā)明提供了類似JDK8的Stream式驗(yàn)證方式,可以一次性驗(yàn)證多個(gè)屬性,每一個(gè)屬性可以指定多個(gè)驗(yàn)證器,驗(yàn)證器可以在滿足指定的條件下執(zhí)行,并且采用了惰性求值的方式,一旦校驗(yàn)到錯(cuò)誤,并不會(huì)把錯(cuò)誤立即返回,除非手動(dòng)刷新錯(cuò)誤或者執(zhí)行完畢。

2、Bean屬性驗(yàn)證

除了可以使用基于屬性的驗(yàn)證方式之外,還可以使用注解方式,通過在屬性中添加@Check注解,同時(shí)在注解中指定驗(yàn)證器便可完成一次驗(yàn)證。

普通屬性驗(yàn)證與Bean屬性驗(yàn)證各有特點(diǎn),前者增加了驗(yàn)證的靈活性,后者提高了代碼的簡潔度。在實(shí)際開發(fā)中,可以同時(shí)使用這兩種方式進(jìn)行混合驗(yàn)證。

結(jié)合圖1,本發(fā)明驗(yàn)證一個(gè)屬性的具體流程包括以下步驟:

步驟1、獲取當(dāng)前屬性的驗(yàn)證器鏈,從驗(yàn)證器鏈中取出第一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器;

步驟2、判斷當(dāng)前驗(yàn)證器是否存在,若存在,進(jìn)入步驟3,若不存在,進(jìn)入步驟8;

步驟3、當(dāng)前驗(yàn)證器的運(yùn)行條件是否滿足,若不滿足,則將下一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器,返回步驟2,若滿足,則進(jìn)入步驟4;

步驟4、執(zhí)行當(dāng)前驗(yàn)證器的前置驗(yàn)證器,進(jìn)行前置驗(yàn)證;

步驟5、執(zhí)行當(dāng)前驗(yàn)證器,進(jìn)行當(dāng)前驗(yàn)證;

步驟6、執(zhí)行當(dāng)前驗(yàn)證器的后置驗(yàn)證器,進(jìn)行后置驗(yàn)證;

步驟7、判斷是否需要立即刷新驗(yàn)證結(jié)果,若需要,則進(jìn)入步驟8,若不需要,則將下一個(gè)驗(yàn)證器作為當(dāng)前驗(yàn)證器,返回步驟2;

步驟8、獲取驗(yàn)證結(jié)果后結(jié)束。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
左权县| 宜城市| 岑溪市| 资溪县| 凤山市| 康乐县| 丹阳市| 桓仁| 剑阁县| 昌乐县| 宾川县| 寿光市| 德江县| 南安市| 察雅县| 都江堰市| 延川县| 清水县| 独山县| 盈江县| 永宁县| 龙岩市| 鹤庆县| 博客| 肥西县| 盘锦市| 东兰县| 乡宁县| 卢湾区| 大新县| 慈溪市| 常宁市| 揭阳市| 壤塘县| 怀集县| 崇州市| 吉木萨尔县| 右玉县| 朝阳市| 延川县| 柞水县|