專利名稱:數(shù)據(jù)校驗系統(tǒng)和數(shù)據(jù)校驗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)校驗領(lǐng)域,具體而言,涉及一種數(shù)據(jù)校驗系統(tǒng)和一種數(shù)據(jù)校驗方法。
背景技術(shù):
在WEB應(yīng)用開發(fā)中,當用戶在客戶端通過網(wǎng)絡(luò)頁面向服務(wù)端提交數(shù)據(jù)的時候,為了保證數(shù)據(jù)的完整性和易用性,客戶端需要對用戶輸入的數(shù)據(jù)進行校驗,客戶端的校驗方法一般用JavaScript完成。但是,客戶端的校驗是不可靠的,主流瀏覽器都可以禁止JavaScript的運行,因此客戶端校驗不能代替服務(wù)端校驗。為了安全起見,并充分保證數(shù)據(jù)的完整性,該數(shù)據(jù)需要在服務(wù)端作同樣的校驗,一般來說,服務(wù)端的校驗采用JAVA或.NET實現(xiàn)。當然,如果僅僅考慮數(shù)據(jù)的完整性,服務(wù)端的校驗是足夠的。但是,如果沒有客戶端校驗,所有的校驗實在服務(wù)端完成,每個用戶的輸入校驗需要客戶端與服務(wù)端往復(fù)交互一次,·一方面增加了服務(wù)端的載荷,另一方面也增加了校驗響應(yīng)時間,影響了用戶體驗。考慮到在網(wǎng)絡(luò)應(yīng)用中數(shù)據(jù)完整性和良好用戶體驗,在常規(guī)的實現(xiàn)中,同樣的驗證邏輯需要在客戶端通過JavaScript和服務(wù)端通過JAVA或.NET分別予以實現(xiàn),這種實現(xiàn)方式一方面實現(xiàn)工作量大,另一方面也很容易造成服務(wù)端和客戶端實現(xiàn)邏輯不一致,加大了開發(fā)和維護的難度,導(dǎo)致網(wǎng)絡(luò)應(yīng)用的可拓展性差。因此,需要一種新的數(shù)據(jù)校驗技術(shù),通過采用統(tǒng)一的校驗規(guī)則進行數(shù)據(jù)校驗,降低開發(fā)和維護的復(fù)雜度與工作量,增強網(wǎng)絡(luò)應(yīng)用的可拓展性。
發(fā)明內(nèi)容
本發(fā)明正是基于上述問題,提出了一種數(shù)據(jù)校驗技術(shù),通過采用統(tǒng)一的校驗規(guī)則進行數(shù)據(jù)校驗,能夠降低開發(fā)和維護的復(fù)雜度與工作量,增強網(wǎng)絡(luò)應(yīng)用的可拓展性。有鑒于此,本發(fā)明提出了一種數(shù)據(jù)校驗系統(tǒng),包括加載單元,用于將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中;獲取單元,用于在所述服務(wù)器接收到客戶端的數(shù)據(jù)后,從所述校驗規(guī)則庫中獲取所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及在所述服務(wù)器接收到客戶端的頁面請求后,從所述校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則;校驗單元,用于按所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對所述數(shù)據(jù)進行校驗,以及按照校驗?zāi)_本對所述客戶端的數(shù)據(jù)進行校驗;腳本生成單元,用于按所述所請求頁面包含的窗口的校驗規(guī)則生成所述校驗?zāi)_本并發(fā)送至所述客戶端。在該技術(shù)方案中,當服務(wù)器接收到客戶端的數(shù)據(jù)后,能夠從校驗規(guī)則庫中獲取相應(yīng)的校驗規(guī)則對該數(shù)據(jù)進行校驗,并且能夠?qū)⑾鄳?yīng)的校驗規(guī)則生成校驗?zāi)_本發(fā)送至客戶端,然后客戶端可以按照該校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗。通過從同一個校驗規(guī)則庫中獲取校驗規(guī)則對數(shù)據(jù)進行校驗,使服務(wù)器和客戶端對數(shù)據(jù)的校驗規(guī)則得到統(tǒng)一,一方面減少了數(shù)據(jù)校驗的工作量,另一方面保證了服務(wù)器和客戶端數(shù)據(jù)校驗邏輯的一致性,從而降低了網(wǎng)絡(luò)開發(fā)和維護的難度,加大了網(wǎng)絡(luò)應(yīng)用的可拓展性。
在上述技術(shù)方案中,優(yōu)選地,還包括解析單元,用于根據(jù)服務(wù)端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及根據(jù)所述客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述所請求頁面包含的窗口的校驗規(guī)則。在該技術(shù)方案中,由于同樣的校驗邏輯在服務(wù)端和客戶端的實現(xiàn)校驗所采用的技術(shù)不同,根據(jù)不同的校驗方式設(shè)置相應(yīng)的校驗規(guī)則解析器,可以使不同的校驗方式都能使用相同的校驗規(guī)則。在上述技術(shù)方案中,優(yōu)選地,所述加載單元用于,根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī)則庫加載至所述服務(wù)器。 在上述技術(shù)方案中,優(yōu)選地,還包括規(guī)則生成單元,用于生成不同的基礎(chǔ)校驗規(guī)貝IJ,使用所述基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到所述校驗規(guī)則庫中。在該技術(shù)方案中,通過生成多種基礎(chǔ)校驗規(guī)則,在對具體的窗口進行校驗時,可以 調(diào)用基礎(chǔ)校驗規(guī)則并進行組合,以對窗口進行校驗。由于在校驗前已經(jīng)生成了多種基礎(chǔ)校驗規(guī)則,在對窗口進行校驗時,就無需重新獲取規(guī)則進行校驗,只需要將基礎(chǔ)校驗規(guī)則進行組合即可,簡化了窗體校驗的過程。在上述任一技術(shù)方案中,優(yōu)選地,還包括判斷單元,用于判斷所述服務(wù)器的校驗是否成功,若成功,向所述客戶端返回校驗成功信息,若失敗,則返回校驗失敗信息。根據(jù)本發(fā)明的又一方面,還提出了一種數(shù)據(jù)校驗方法,包括步驟202,將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中;步驟204,在所述服務(wù)器接收到客戶端的數(shù)據(jù)后,從所述校驗規(guī)則庫中獲取所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,并按所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對所述數(shù)據(jù)進行校驗;步驟206,在所述服務(wù)器接收到客戶端的頁面請求后,從所述校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則,并按所述所請求頁面包含的窗口的校驗規(guī)則生成校驗?zāi)_本,發(fā)送至所述客戶端以對所述客戶端的數(shù)據(jù)進行校驗。在該技術(shù)方案中,當服務(wù)器接收到客戶端的數(shù)據(jù)后,能夠從校驗規(guī)則庫中獲取相應(yīng)的校驗規(guī)則對該數(shù)據(jù)進行校驗,并且能夠?qū)⑾鄳?yīng)的校驗規(guī)則生成校驗?zāi)_本發(fā)送至客戶端,然后客戶端可以按照該校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗。通過從同一個校驗規(guī)則庫中獲取校驗規(guī)則對數(shù)據(jù)進行校驗,使服務(wù)器和客戶端對數(shù)據(jù)的校驗規(guī)則得到統(tǒng)一,一方面減少了數(shù)據(jù)校驗的工作量,另一方面保證了服務(wù)器和客戶端數(shù)據(jù)校驗邏輯的一致性,從而降低了網(wǎng)絡(luò)開發(fā)和維護的難度,加大了網(wǎng)絡(luò)應(yīng)用的可拓展性。在上述技術(shù)方案中,優(yōu)選地,所述步驟204還包括根據(jù)服務(wù)端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則;所述步驟206還包括根據(jù)所述客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述所請求頁面包含的窗口的校驗規(guī)則。在該技術(shù)方案中,由于同樣的校驗邏輯在服務(wù)器和客戶端的實現(xiàn)校驗所采用的技術(shù)不同,根據(jù)不同的校驗方式設(shè)置相應(yīng)的校驗規(guī)則解析器,可以使不同的校驗方式都能使用相同的校驗規(guī)則。在上述技術(shù)方案中,優(yōu)選地,所述步驟202包括所述根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī)則庫進行加載至所述服務(wù)器。在上述技術(shù)方案中,優(yōu)選地,在所述步驟202之前,還包括生成不同的基礎(chǔ)校驗規(guī)則,使用所述基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到所述校驗規(guī)則庫中。在該技術(shù)方案中,通過生成多種基礎(chǔ)校驗規(guī)則,在對具體的窗口進行校驗時,可以調(diào)用基礎(chǔ)校驗規(guī)則并進行組合,以對窗口進行校驗。由于在校驗前已經(jīng)生成了多種基礎(chǔ)校驗規(guī)則,在對窗口進行校驗時,就無需重新獲取規(guī)則進行校驗,只需要將基礎(chǔ)校驗規(guī)則進行組合即可,簡化了窗體校驗的過程。在上述任一技術(shù)方案中,優(yōu)選地,所述步驟204還包括判斷所述服務(wù)器的校驗是否成功,若成功,向所述客戶端返回校驗成功信息,若失敗,則返回校驗失敗信息。通過以上技術(shù)方案,通過采用統(tǒng)一的校驗規(guī)則進行數(shù)據(jù)校驗,能夠降低開發(fā)和維護的復(fù)雜度與工作量,增強網(wǎng)絡(luò)應(yīng)用的可拓展性。
圖I示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)的框圖; 圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗方法的流程圖;圖3示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)的結(jié)構(gòu)示意圖;圖4示出了根據(jù)本發(fā)明的實施例的窗體規(guī)則關(guān)系示意圖;圖5示出了根據(jù)本發(fā)明的實施例的服務(wù)端校驗器的示意圖;圖6示出了根據(jù)本發(fā)明的實施例的服務(wù)端校驗的流程圖;圖7示出了根據(jù)本發(fā)明的實施例的客戶端校驗的流程圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結(jié)合附圖和具體實施方式
對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。圖I示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)的框圖。如圖I所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)100包括加載單元102,用于將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中;獲取單元104,用于在服務(wù)器接收到客戶端的數(shù)據(jù)后,從校驗規(guī)則庫中獲取數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及在服務(wù)器接收到客戶端的頁面請求后,從校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則;校驗單元106,用于按數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對數(shù)據(jù)進行校驗,以及按照校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗;腳本生成單元108,用于按所請求頁面包含的窗口的校驗規(guī)則生成校驗?zāi)_本并發(fā)送至客戶端。在頁面生成的過程中,服務(wù)端按照相應(yīng)的校驗規(guī)則生成客戶端校驗?zāi)_本并發(fā)送至客戶端,客戶端先按照該校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗,然后將數(shù)據(jù)發(fā)送到服務(wù)端;當服務(wù)器接收到客戶端的數(shù)據(jù)后,能夠從校驗規(guī)則庫中獲取相應(yīng)的校驗規(guī)則對該數(shù)據(jù)進行校驗。通過從同一個校驗規(guī)則庫中獲取校驗規(guī)則對數(shù)據(jù)進行校驗,使服務(wù)器和客戶端對數(shù)據(jù)的校驗規(guī)則得到統(tǒng)一,一方面減少了數(shù)據(jù)校驗的工作量,另一方面保證了服務(wù)器和客戶端數(shù)據(jù)校驗邏輯的一致性,從而降低了網(wǎng)絡(luò)開發(fā)和維護的難度,加大了網(wǎng)絡(luò)應(yīng)用的可拓展性。優(yōu)選地,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)100還包括解析單元110,用于根據(jù)服務(wù)端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)貝U,以及根據(jù)客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所請求頁面包含的窗口的校驗規(guī)則。同樣的校驗邏輯在服務(wù)端和客戶端的校驗方式不同,在客戶端是通過瀏覽器調(diào)用JavaScript進行校驗,而在服務(wù)端是調(diào)用服務(wù)器中的驗證器進行校驗。并且服務(wù)端有不同的校驗方式,具體包括Java和.NET技術(shù),不同的校驗方式都能實現(xiàn)相同的校驗規(guī)則,因此根據(jù)不同的校驗方式設(shè)置相應(yīng)的校驗規(guī)則解析器,可以使不同的校驗方式都能使用相同的校驗規(guī)則。優(yōu)選地,加載單元102用于,根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī)則庫加載至服務(wù)器。不同地域、行業(yè)和/或客戶所使用的校驗規(guī)則不同,例如在ERP產(chǎn)品中的地址輸 入頁面中,需要對郵政編碼進行校驗,中國的郵政編碼是六位數(shù)字,而美國的是五位數(shù)字,加拿大的卻是六位數(shù)字、字母混合,不同的國家或地域驗證規(guī)則可能是不同的。因此需要選擇選擇相應(yīng)的校驗規(guī)則庫加載至服務(wù)器以進行相應(yīng)的校驗。優(yōu)選地,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)100還可以包括規(guī)則生成單元112,用于生成不同的基礎(chǔ)校驗規(guī)則,使用基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到校驗規(guī)則庫中?;A(chǔ)校驗規(guī)則是抽象最小規(guī)則的集合,是面向分析層面,而窗體校驗規(guī)則具體應(yīng)用于窗體的校驗邏輯,不同的網(wǎng)絡(luò)應(yīng)用有不同的窗體集合及窗體校驗邏輯,窗體校驗邏輯是組合基礎(chǔ)規(guī)則庫中的校驗規(guī)則,是面向應(yīng)用層面。通過生成多種基礎(chǔ)校驗規(guī)則,在對具體的窗口進行校驗時,可以調(diào)用基礎(chǔ)校驗規(guī)則并進行組合,以對窗口進行校驗。由于在校驗前已經(jīng)生成了多種基礎(chǔ)校驗規(guī)則,在對窗口進行校驗時,就無需重新獲取規(guī)則進行校驗,只需要將基礎(chǔ)校驗規(guī)則進行組合即可,簡化了窗體校驗的過程。優(yōu)選地,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)100還可以包括判斷單元114,用于判斷服務(wù)器的校驗是否成功,若成功,向客戶端返回校驗成功信息,若失敗,則返回校驗失敗息。圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗方法包括步驟202,將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中;步驟204,在服務(wù)器接收到客戶端的數(shù)據(jù)后,從校驗規(guī)則庫中獲取數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,并按數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對數(shù)據(jù)進行校驗;步驟206,在服務(wù)器接收到客戶端的頁面請求后,從校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則,并按所請求頁面包含的窗口的校驗規(guī)則生成校驗?zāi)_本,發(fā)送至客戶端以對客戶端的數(shù)據(jù)進行校驗。當服務(wù)器接收到客戶端的數(shù)據(jù)后,能夠從校驗規(guī)則庫中獲取相應(yīng)的校驗規(guī)則對該數(shù)據(jù)進行校驗,并且能夠?qū)⑾鄳?yīng)的校驗規(guī)則生成校驗?zāi)_本發(fā)送至客戶端,然后客戶端可以按照該校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗。通過從同一個校驗規(guī)則庫中獲取校驗規(guī)則對數(shù)據(jù)進行校驗,使服務(wù)器和客戶端對數(shù)據(jù)的校驗規(guī)則得到統(tǒng)一,一方面減少了數(shù)據(jù)校驗的工作量,另一方面保證了服務(wù)器和客戶端數(shù)據(jù)校驗邏輯的一致性,從而降低了網(wǎng)絡(luò)開發(fā)和維護的難度,加大了網(wǎng)絡(luò)應(yīng)用的可拓展性。優(yōu)選地,步驟204還可以包括根據(jù)服務(wù)器實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則;步驟206還包括根據(jù)客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所請求頁面包含的窗口的校驗規(guī)則。同樣的校驗邏輯在服務(wù)端和客戶端的校驗方式不同,在客戶端是通過瀏覽器調(diào)用JavaScript進行校驗,而在服務(wù)端是調(diào)用服務(wù)器中的驗證器進行校驗。并且服務(wù)端有不同的校驗方式,具體包括Java和.NET技術(shù),不同的校驗方式都能實現(xiàn)相同的校驗規(guī)則,因此根據(jù)不同的校驗方式設(shè)置相應(yīng)的校驗規(guī)則解析器,可以使不同的校驗方式都能使用相同的校驗規(guī)則。優(yōu)選地,步驟202包括根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī) 則庫進行加載至服務(wù)器。不同地域、行業(yè)和/或客戶所使用的校驗規(guī)則不同,例如在ERP產(chǎn)品中的地址輸入頁面中,需要對郵政編碼進行校驗,中國的郵政編碼是六位數(shù)字,而美國的是五位數(shù)字,加拿大的卻是六位數(shù)字、字母混合,不同的國家或地域驗證規(guī)則可能是不同的。因此需要選擇選擇相應(yīng)的校驗規(guī)則庫加載至服務(wù)器以進行相應(yīng)的校驗。優(yōu)選地,在步驟202之前,還可以包括生成不同的基礎(chǔ)校驗規(guī)則,使用基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到校驗規(guī)則庫中?;A(chǔ)校驗規(guī)則是抽象最小規(guī)則的集合,是面向分析層面,而窗體校驗規(guī)則具體應(yīng)用于窗體的校驗邏輯,不同的網(wǎng)絡(luò)應(yīng)用有不同的窗體集合及窗體校驗邏輯,窗體校驗邏輯是組合基礎(chǔ)規(guī)則庫中的校驗規(guī)則,是面向應(yīng)用層面。通過生成多種基礎(chǔ)校驗規(guī)則,在對具體的窗口進行校驗時,可以調(diào)用基礎(chǔ)校驗規(guī)則并進行組合,以對窗口進行校驗。由于在校驗前已經(jīng)生成了多種基礎(chǔ)校驗規(guī)則,在對窗口進行校驗時,就無需重新獲取規(guī)則進行校驗,只需要將基礎(chǔ)校驗規(guī)則進行組合即可,簡化了窗體校驗的過程。優(yōu)選地,步驟204還可以包括判斷服務(wù)器的校驗是否成功,若成功,向客戶端返回校驗成功信息,若失敗,則返回校驗失敗信息。圖3示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)的結(jié)構(gòu)示意圖。如圖3所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)校驗系統(tǒng)可以分為三個部分,即規(guī)則定義層302、規(guī)則解析層303和規(guī)則應(yīng)用層306。規(guī)則定義層302負責(zé)定義抽象的校驗規(guī)則,校驗規(guī)則與實現(xiàn)無關(guān),可以采用文本文件進行定義。規(guī)則解析層304是基于規(guī)則定義層302定義的校驗規(guī)則在具體的平臺中的解析實現(xiàn),該解析與具體的實現(xiàn)方式相關(guān),JAVA平臺和.NET平臺有各自獨立的解析實現(xiàn)。規(guī)則應(yīng)用層306是通過讀取窗體規(guī)則庫322中的窗體規(guī)則給具體的窗體予以校驗,對于網(wǎng)絡(luò)服務(wù)端316的檢驗,依次調(diào)用窗體所包含的校驗器對窗體進行校驗。對客戶端326的校驗,JavaScript校驗?zāi)_本引擎346通過窗體規(guī)則庫322以及JavaScript規(guī)則校驗庫324驅(qū)動生成客戶端326的JavaScript校驗?zāi)_本356,該腳本在客戶端326的瀏覽器執(zhí)行完成客戶端校驗。通過三層結(jié)構(gòu)的相互配合,共同完成網(wǎng)絡(luò)統(tǒng)一校驗規(guī)則的服務(wù)端316和客戶端326的校驗。規(guī)則定義層302完成抽象規(guī)則的定義。從應(yīng)用層面分析,窗體或頁面的校驗千差萬別,不同的業(yè)務(wù)、不同的行業(yè)、不同的國家可能校驗規(guī)則不同,但是基本的校驗規(guī)則大部分是相同的,例如必輸入項校驗、email格式校驗、數(shù)字校驗、日期格式校驗、URL校驗等,對于窗體的校驗實際是這些基本校驗規(guī)則的組合。因此,在規(guī)則定義層302的規(guī)則庫312可以劃分為基礎(chǔ)規(guī)則庫332和與應(yīng)用相關(guān)的窗體規(guī)則庫322。基礎(chǔ)規(guī)則庫332負責(zé)定義基本的校驗規(guī)則,窗體規(guī)則庫322通過組合基礎(chǔ)規(guī)則庫332中的基礎(chǔ)規(guī)則定義具體應(yīng)用中窗體的校驗規(guī)則。規(guī)則定義僅僅描述抽象的規(guī)則,與具體實現(xiàn)無關(guān)。可以用文本文件予以描述,一 般采用XML文件定義規(guī)則庫312,一方面可以很好地將規(guī)則定義結(jié)構(gòu)化,并且能夠很好集成JAVA或.NET平臺?;A(chǔ)規(guī)則庫322定義基本的校驗規(guī)則,具體可以分為通用規(guī)則庫3322和定制規(guī)則庫 3324。有些校驗規(guī)則是被各個應(yīng)用普遍使用,例如必輸入項校驗、email格式校驗、數(shù)字校驗、日期格式校驗、URL校驗、郵政編碼校驗等,可以將這些規(guī)則放入通用規(guī)則庫3322 ;有些規(guī)則校驗只在某個具體應(yīng)用中使用,可以由開發(fā)者自己拓展定義,并將該類規(guī)則放入定制規(guī)則庫3324。通用規(guī)則能在被多個應(yīng)用調(diào)用,滿足軟件開發(fā)的重用性,而定制規(guī)則滿足開發(fā)中的校驗規(guī)則的可拓展性。在校驗過程中,分析具體應(yīng)用的領(lǐng)域,識別、抽取通用校驗規(guī)則,并在通用規(guī)則庫3322中予以定義。通用規(guī)則庫3322可以包含如下規(guī)則必輸項校驗、數(shù)字及格式校驗、字符及格式校驗、日期及格式校驗、郵政編碼校驗、Email格式校驗、URL格式校驗、IP格式校驗、數(shù)字比較校驗。當然,不同的應(yīng)用領(lǐng)域有不同的應(yīng)用場景,可以依據(jù)具體的應(yīng)用場景抽取通用規(guī)則并加入通用規(guī)則庫3322。不同的應(yīng)用有不同的應(yīng)用場景,不同的應(yīng)用場景又有不同的校驗規(guī)則。對于與應(yīng)用相關(guān)且在通用規(guī)則庫3322沒有覆蓋的規(guī)則,需要在定制規(guī)則庫3324中定義,開發(fā)人員可以基于規(guī)則的拓展模板定制規(guī)則。從規(guī)則的定義和實現(xiàn)本身來講,通用規(guī)則和定制規(guī)則定義和實現(xiàn)的方式相同,只是有不同的應(yīng)用范圍。圖4示出了根據(jù)本發(fā)明的實施例的窗體規(guī)則關(guān)系示意圖。如圖4所示,在如圖3所示的基礎(chǔ)規(guī)則庫332中定義基本的校驗規(guī)則(包括通用規(guī)則和定制規(guī)則),是抽象最小規(guī)則集合,是面向分析層面。而如圖3所示的窗體規(guī)則庫322是定義具體應(yīng)用中窗體的校驗邏輯,不同的應(yīng)用有不同的窗體集合及窗體校驗邏輯,窗體校驗邏輯是組合基礎(chǔ)規(guī)則庫332中的校驗規(guī)則,是面向應(yīng)用層面。不同的行業(yè)、不同的地域可以定義不同的校驗窗體集合,通過繼承、重載的方式為不同行業(yè)、不同應(yīng)用定制窗體校驗邏輯。在水平(或標準)實現(xiàn)中定義通用的窗體規(guī)則庫322,這些窗體規(guī)則庫322是不同行業(yè)和地域所普遍公用的校驗規(guī)則。在地域拓展層,可以對不同地域中與水平層校驗規(guī)則不一樣的窗體規(guī)則進行定制;同樣在行業(yè)拓展層和客戶定制層,也可以定制行業(yè)或客戶所特有的驗證規(guī)則。圖5示出了根據(jù)本發(fā)明的實施例的服務(wù)端校驗器的示意圖。如圖5所示,服務(wù)端規(guī)則校驗可以通過定義通用的校驗接口 502統(tǒng)一校驗規(guī)則的校驗實現(xiàn)方式,而如圖3所示的校驗器336的功能即相當于校驗接口 502,基于該接口實現(xiàn)的具體的業(yè)務(wù)規(guī)則校驗,通用規(guī)則校驗類504和定制規(guī)則校驗類506都通過統(tǒng)一的校驗接口 5002繼承,實現(xiàn)具體規(guī)則校驗。具體的校驗實現(xiàn)方式,可以通過采用Java或.NET實現(xiàn)。校驗器能夠接受校驗的目標、校驗參數(shù)等,滿足各種不同場景的需要。如圖3所示的規(guī)則庫312中定義的規(guī)則是抽象的規(guī)則校驗邏輯,與具體實現(xiàn)無關(guān),但是,同樣的校驗規(guī)則,在服務(wù)端316和客戶端326校驗的方式不同,在客戶端326是通過瀏覽器調(diào)用JavaScript進行校驗,而在服務(wù)端316是在應(yīng)用服務(wù)器上調(diào)用服務(wù)端316的校驗器進行校驗,并且服務(wù)端316有不同的校驗實現(xiàn)技術(shù),包括Java和.NET技術(shù),不同的校驗實現(xiàn)技術(shù)都能實現(xiàn)相同的校驗規(guī)則,因此需要為不同的技術(shù)提供相應(yīng)的解析器。規(guī)則解析層面與實現(xiàn)相關(guān),客戶端校驗與服務(wù)端316校驗方式不同,校驗實現(xiàn)方式也不同?!た蛻舳?26校驗是客戶端瀏覽器解釋執(zhí)行JavaScript執(zhí)行客戶端校驗,其中,JavaScript是一種解釋腳本語言,不同的瀏覽器有不同的支持方式,有時同一段JavaScript腳本在不同的瀏覽器執(zhí)行結(jié)果不同,甚至不能在某些瀏覽器中運行。需要為基礎(chǔ)規(guī)則庫332中定義的規(guī)則統(tǒng)一提供JavaScript客戶端校驗實現(xiàn)。該JavaScript實現(xiàn)可以由如圖3所示的JavaScript校驗?zāi)_本引擎346推向客戶端頁面。圖6示出了根據(jù)本發(fā)明的實施例的服務(wù)端校驗的流程圖。如圖6所示,根據(jù)本發(fā)明的實施例的服務(wù)端校驗過程包括步驟602,在服務(wù)器啟動時,根據(jù)所處地域,所用行業(yè)和相應(yīng)客戶將相應(yīng)的窗體規(guī)則庫加載至服務(wù)器,并緩存至內(nèi)存中;步驟604,接受客戶端發(fā)送的窗體數(shù)據(jù);步驟606,解析目標窗體的校驗規(guī)則;步驟608,根據(jù)目標窗體的校驗規(guī)則,從窗體規(guī)則庫中依次調(diào)用相應(yīng)的校驗規(guī)則進行校驗;步驟610,判斷對窗體的校驗是否成功;步驟612,若成功,則向客戶端返回校驗成功信息;步驟614,若失敗,則向客戶端返回校驗失敗信息;網(wǎng)絡(luò)應(yīng)用程序依據(jù)校驗成功或校驗失敗的信息執(zhí)行相應(yīng)的業(yè)務(wù)操作。圖7示出了根據(jù)本發(fā)明的實施例的客戶端校驗的流程圖。如圖7所示,根據(jù)本發(fā)明的實施例的客戶端校驗過程包括步驟702,在服務(wù)器啟動時,根據(jù)所處地域,所用行業(yè)和相應(yīng)客戶將相應(yīng)的窗體規(guī)則庫加載至服務(wù)器,并緩存至內(nèi)存中;步驟704,服務(wù)器接收用戶請求頁面;步驟706,服務(wù)器根據(jù)請求頁面解析相應(yīng)的窗體的校驗規(guī)則;步驟708,服務(wù)器從窗體規(guī)則庫中獲取相應(yīng)的窗體校驗規(guī)則,并通過JavaScript腳本驗證引擎生成JavaScript腳本;
步驟710,服務(wù)器將JavaScript腳本與請求頁面腳本返回至客戶端,在客戶端由瀏覽器調(diào)用JavaScript腳本執(zhí)行客戶端驗證。以上結(jié)合附圖詳細說明了本發(fā)明的技術(shù)方案,考慮到相關(guān)技術(shù)中,數(shù)據(jù)校驗在客戶端和服務(wù)端采用不同的實現(xiàn)方式進行,導(dǎo)致校驗工作量較大,而且容易造成服務(wù)端和客戶端實現(xiàn)邏輯不一致,加大了開發(fā)和維護的難度,導(dǎo)致網(wǎng)絡(luò)應(yīng)用的可拓展性差。通過本發(fā)明的技術(shù)方案,能夠采用統(tǒng)一的校驗規(guī)則進行數(shù)據(jù)校驗,降低開發(fā)和維護的復(fù)雜度與工作量,增強網(wǎng)絡(luò)應(yīng)用的可拓展性。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)校驗系統(tǒng),其特征在于,包括 加載單元,用于將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中; 獲取單元,用于在所述服務(wù)器接收到客戶端的數(shù)據(jù)后,從所述校驗規(guī)則庫中獲取所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及在所述服務(wù)器接收到客戶端的頁面請求后,從所述校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則; 校驗單元,用于按所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對所述數(shù)據(jù)進行校驗,以及按照校驗?zāi)_本對所述客戶端的數(shù)據(jù)進行校驗; 腳本生成單元,用于按所述所請求頁面包含的窗口的校驗規(guī)則生成所述校驗?zāi)_本并發(fā)送至所述客戶端。
2.根據(jù)權(quán)利要求I所述的數(shù)據(jù)校驗系統(tǒng),其特征在于,還包括 解析單元,用于根據(jù)服務(wù)端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及根據(jù)所述客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述所請求頁面包含的窗口的校驗規(guī)則。
3.根據(jù)權(quán)利要求I所述的數(shù)據(jù)校驗系統(tǒng),其特征在于,所述加載單元用于,根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī)則庫加載至所述服務(wù)器。
4.根據(jù)權(quán)利要求I所述的數(shù)據(jù)校驗系統(tǒng),其特征在于,還包括 規(guī)則生成單元,用于生成不同的基礎(chǔ)校驗規(guī)則,使用所述基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到所述校驗規(guī)則庫中。
5.根據(jù)權(quán)利要求I至4所述的數(shù)據(jù)校驗系統(tǒng),其特征在于,還包括 判斷單元,用于判斷所述服務(wù)器的校驗是否成功,若成功,向所述客戶端返回校驗成功 息,若失敗,則返回校驗失敗息。
6.一種數(shù)據(jù)校驗方法,其特征在于,包括 步驟202,將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中; 步驟204,在所述服務(wù)器接收到客戶端的數(shù)據(jù)后,從所述校驗規(guī)則庫中獲取所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,并按所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對所述數(shù)據(jù)進行校驗; 步驟206,在所述服務(wù)器接收到客戶端的頁面請求后,從所述校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則,并按所述所請求頁面包含的窗口的校驗規(guī)則生成校驗?zāi)_本,發(fā)送至所述客戶端以對所述客戶端的數(shù)據(jù)進行校驗。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)校驗方法,其特征在于,所述步驟204還包括根據(jù)服務(wù)端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則; 所述步驟206還包括根據(jù)所述客戶端實現(xiàn)校驗所采用技術(shù)的不同,通過相應(yīng)的解析器解析所述所請求頁面包含的窗口的校驗規(guī)則。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)校驗方法,其特征在于,所述步驟202包括所述根據(jù)預(yù)設(shè)的地域、行業(yè)和/或客戶信息,選擇相應(yīng)的校驗規(guī)則庫進行加載至所述服務(wù)器。
9.根據(jù)權(quán)利要求6所述的數(shù)據(jù)校驗方法,其特征在于,在所述步驟202之前,還包括生成不同的基礎(chǔ)校驗規(guī)則,使用所述基礎(chǔ)校驗規(guī)則,組合出不同的窗體校驗規(guī)則,并存儲到所述校驗規(guī)則庫中。
10.根據(jù)權(quán)利要求6至9中任一項所述的數(shù)據(jù)校驗方法,其特征在于,所述步驟204還包括判斷所述服務(wù)器的校驗是否成功,若成功,向所述客戶端返回校驗成功信息,若失敗,則返回校驗失敗信息 。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)校驗系統(tǒng),包括加載單元,用于將校驗規(guī)則庫加載至服務(wù)器并緩存至內(nèi)存中;獲取單元,用于在服務(wù)器接收到客戶端的數(shù)據(jù)后,從校驗規(guī)則庫中獲取數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則,以及在服務(wù)器接收到客戶端的頁面請求后,從校驗規(guī)則庫中獲取所請求頁面包含的窗體的校驗規(guī)則;校驗單元,用于按數(shù)據(jù)對應(yīng)的窗體的校驗規(guī)則對數(shù)據(jù)進行校驗,以及按照校驗?zāi)_本對客戶端的數(shù)據(jù)進行校驗;腳本生成單元,用于按所請求頁面包含的窗口的校驗規(guī)則生成校驗?zāi)_本并發(fā)送至客戶端。本發(fā)明還提出了一種數(shù)據(jù)校驗方法。通過本發(fā)明的技術(shù)方案,能夠采用統(tǒng)一的校驗規(guī)則進行數(shù)據(jù)校驗,降低開發(fā)和維護的復(fù)雜度與工作量,增強網(wǎng)絡(luò)應(yīng)用的可拓展性。
文檔編號H04L29/08GK102932332SQ201210372038
公開日2013年2月13日 申請日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者劉學(xué)斌 申請人:用友軟件股份有限公司