數據展示模板的錯誤檢測方法
【專利摘要】本申請公開了一種數據展示模板的錯誤檢測方法,包括:對于用戶提交的數據展示模板,確定該模板的腳本文件中的每個標簽是否屬于系統標簽,如果有不屬于系統標簽的標簽,則將不屬于系統標簽的所有標簽通知給所述用戶,結束所述方法;確定所述腳本文件需要有結束符的所有標簽,并判斷所述腳本文件中是否缺少相應的結束符標簽,如果是,則將缺少結束符標簽的錯誤信息通知給所述用戶,結束所述方法;在后臺執行所述腳本文件進行網頁渲染,如果在所述執行時出現異常,則將所述異常的相關錯誤信息通知給所述用戶。采用本發明可以對數據展示模板的腳本文件中的錯誤進行準確識別并通知給用戶,提高系統的應用性能。
【專利說明】數據展示模板的錯誤檢測方法
【技術領域】
[0001]本發明涉及計算機互聯網技術,特別是涉及一種數據展示模板的錯誤檢測方法。【背景技術】
[0002]Velocity 類似于 freemarker 是一個基于 java 的模板引擎(template engine)。它可以僅僅使用模板語言(template language)來引用由java代碼定義的對象,從而實現對象數據的展示,或者網頁數據渲染。
[0003]velocity有多種應用領域,當velocity應用于web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點,也就是說,頁面設計人員可以只關注頁面的顯示效果,而由java程序開發人員關注業務邏輯編碼。java程序開發人員從后臺通過業務邏輯代碼封裝數據對象輸出到前臺,前臺的頁面結構設計師就可以遍歷這些數據對象中的數據進行數據展示的頁面設計。因為Velocity將java代碼從web頁面中分離出來,這樣為web站點的維護提供了方便,從而可以采用Velocity語言實現數據展示模板的開發。
[0004]隨著互聯網業務的不斷拓展,目前也開始需要用戶進行數據展示模板(如velocity模板)的開發,現有的velocity模板引擎中沒有針對velocity代碼的語法驗證工具或者技術方案,所以用戶在一種自由度比較高的情況下編寫出的velocity模板腳本,會導致用戶無法準確地知道自己寫的velocity代碼是否正確,是否符合語法規范,從而用戶編寫的數據展示模板不能進行正常的網頁渲染,進而降低系統的應用性能。
【發明內容】
[0005]有鑒于此,本發明的主要目的在于提供一種數據展示模板的錯誤檢測方法,該方法可以對數據展示模板的腳本文件中的錯誤進行準確識別并通知給用戶,提高系統的應用性能。
[0006]為了達到上述目的,本發明提出的技術方案為:
[0007]—種數據展示模板的錯誤檢測方法,包括:
[0008]a、對于用戶提交的數據展示模板,確定該模板的腳本文件中的每個標簽是否屬于系統標簽,如果有不屬于系統標簽的標簽,則將不屬于系統標簽的所有標簽通知給所述用戶,結束所述方法;
[0009]b、確定所述腳本文件需要有結束符的所有標簽,并判斷所述腳本文件中是否缺少相應的結束符標簽,如果是,則將缺少結束符標簽的錯誤信息通知給所述用戶,結束所述方法;
[0010]C、在后臺執行所述腳本文件進行網頁渲染,如果在所述執行時出現異常,則將所述異常的相關錯誤信息通知給所述用戶。
[0011]綜上所述,本發明提出的數據展示模板的錯誤檢測方法,對用戶提交的數據展示模板進行非系統標簽、缺少結束符標簽以及后臺渲染異常等檢測,如此,可以對數據展示模板的腳本文件中的錯誤進行準確識別并通知給用戶,從而可以實現對數據展示模板的自動化檢測,避免由于用戶無法對所輸入的數據展示模板的正確性進行驗證時所致的數據展示模板無法正常渲染的問題,從而可以提高系統的應用性能。
【專利附圖】
【附圖說明】
[0012]圖1為本發明實施例一的流程示意圖。
【具體實施方式】
[0013]為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖及具體實施例對本發明作進一步地詳細描述。
[0014]本發明的核心思想是:對用戶編寫的代碼是否符合模板編程語言的語法規范,如果有語法問題,會給出較為準確的提示信息。
[0015]圖1為本發明實施例一的流程示意圖,如圖1所示,該實施例主要包括:
[0016]步驟101?102、對于用戶提交的數據展示模板,確定該模板的腳本文件中的每個標簽是否屬于系統標簽,如果有不屬于系統標簽的標簽,則將不屬于系統標簽的所有標簽通知給所述用戶,結束所述方法。
[0017]在實際應用中,所述數據展示模板可以為采用velocity語言編寫的模板。
[0018]本步驟中首先對模板中的標簽是否都屬于系統標簽進行檢查。
[0019]具體地,本步驟中可以采用下述方法確定該模板的腳本文件中的每個標簽是否屬于系統標簽:
[0020]對于每個所述標簽,檢查該標簽是否存在于預設的系統標簽集合中,如果有,則確定該標簽屬于系統標簽。
[0021]在實際應用中,每種語言都有他特有的系統關鍵字,比如java語言中的“public、class、void、if、else” 等。Velocity 模板語言也如此,它具有“foreach、if、set、include、parse、end”等這些系統標簽關鍵字。在具體應用中,velocity系統可以封裝一個velocity系統標簽的配置數據對象存儲這些標簽數據并且是靜態常量不可修改。由于velocity系統標簽都是以“#,,開頭來標示的(如:#set、#include),當用戶編寫的數據展示模板的腳本文件提交過來時,先取出腳本文件中的系統標簽,再把定義好的系統標簽數據構建成一個正則規則,通過java正則進行匹配循環匹配。如果有存在不能匹配的數據,則表示用戶輸入的系統標簽有誤,不是velocity的標簽,返回錯誤信息。
[0022]步驟103?104、確定所述腳本文件需要有結束符的所有標簽,并判斷所述腳本文件中是否缺少相應的結束符標簽,如果是,則將缺少結束符標簽的錯誤信息通知給所述用戶,結束所述方法。
[0023]在通過上述步驟101的檢查后,如果沒有非系統標簽,則在本步驟103?104進行結束符檢查。例如,對于velocity模板語言而言,其中“foreaCh”、“if”、“ifelSe”此3個系統標簽需要有結束符“end”,從模板的腳本代碼中取出這些標簽集合,再通過邏輯計算出是否都有對應的“end”結束符。如果檢查有誤則返回錯誤信息,無誤則進行下一步檢查。
[0024]較佳地,判斷所述腳本文件中是否缺少相應的結束符標簽的具體方法是判斷所述腳本文件中結束符的數量是否等于腳本文件需要有結束符的所有標簽的數量,如果是,則判定不缺少相應的結束符標簽,否則判定缺少相應的結束符標簽。
[0025]在實際應用還可以采用其他的判斷方式,在此不再贅述。
[0026]進一步地,為了確保數據展示模板的安全性,避免數據展示模板中惡意代碼對系統的破壞,本步驟中在判斷出所述腳本文件中不缺少相應的結束符標簽后,還可以進一步對數據展示模板中是否存在不安全代碼進行檢查,即過濾到危險的語法調用,具體地,可以采用下述方法實現這一目的:
[0027]當判斷出所述腳本文件中不缺少相應的結束符標簽時,判斷所述腳本文件中是否存在預設的不安全關鍵字,如果存在,則將存在所述不安全關鍵字的錯誤信息通知給所述用戶,結束所述方法,否則,執行所述步驟105。
[0028]這里,所述預設的不安全關鍵字可以通過黑名單的方式進行記錄,進行判斷所述腳本文件中是否存在預設的不安全關鍵字時,檢測該腳本文件中是否有黑名單中的不安全關鍵字即可。
[0029]步驟105、在后臺執行所述腳本文件進行網頁渲染,如果在所述執行時出現異常,則將所述異常的相關錯誤信息通知給所述用戶。
[0030]本步驟用于在經過上述步驟的檢查未發現錯誤后,通過在后臺對模板腳本文件的運行來確保腳本文件的正確性,當運行時有異常發生時,則系統會給出異常的相關錯誤信息包括異常出現的行數、異常的名稱等,以便用戶可以據此對腳本文件進行糾錯。
[0031]在上述方案中,通過對用戶提交的數據展示模板進行非系統標簽、缺少結束符標簽以及后臺渲染異常等檢測,可以對數據展示模板的腳本文件中的錯誤進行準確識別并通知給用戶,從而可以使用戶可以獲知所提交的數據展示模板的錯誤及具體的錯誤位置,進而進行相應的修正。由此可見本發明通過對數據展示模板的自動化檢測,可以避免由于用戶無法對所輸入的數據展示模板的正確性進行驗證所致的數據展示模板無法正常渲染的問題,從而可以提高系統的應用性能。
[0032]綜上所述,以上僅為本發明的較佳實施例而已,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種數據展示模板的錯誤檢測方法,其特征在于,包括: a、對于用戶提交的數據展示模板,確定該模板的腳本文件中的每個標簽是否屬于系統標簽,如果有不屬于系統標簽的標簽,則將不屬于系統標簽的所有標簽通知給所述用戶,結束所述方法; b、確定所述腳本文件需要有結束符的所有標簽,并判斷所述腳本文件中是否缺少相應的結束符標簽,如果是,則將缺少結束符標簽的錯誤信息通知給所述用戶,結束所述方法; C、在后臺執行所述腳本文件進行網頁渲染,如果在所述執行時出現異常,則將所述異常的相關錯誤信息通知給所述用戶。
2.根據權利要求1所述的方法,其特征在于,所述數據展示模板為采用velocity語言編寫的模板。
3.根據權利要求1所述的方法,其特征在于,所述方法進一步包括: 步驟b中當判斷出所述腳本文件中不缺少相應的結束符標簽時,判斷所述腳本文件中是否存在預設的不安全關鍵字,如果存在,則將存在所述不安全關鍵字的錯誤信息通知給所述用戶,結束所述方法,否則,執行所述步驟C。
4.根據權利要求1所述的方法,其特征在于,步驟a中所述確定該模板的腳本文件中的每個標簽是否屬于系統標簽包括: 對于每個所述標簽,檢查該標簽是否存在于預設的系統標簽集合中,如果有,則確定該標簽屬于系統標簽。
5.根據權利要求1所述的方法,其特征在于,步驟b中所述判斷所述腳本文件中是否缺少相應的結束符標簽包括: 判斷所述腳本文件中結束符的數量是否等于所述腳本文件中需要有結束符的標簽的數量,如果是,則判定不缺少相應的結束符標簽,否則,判定缺少相應的結束符標簽。
【文檔編號】G06F11/36GK103778063SQ201410047136
【公開日】2014年5月7日 申請日期:2014年2月10日 優先權日:2014年2月10日
【發明者】何澤釗 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司