本發(fā)明涉及頁面生成,尤其涉及一種基于mvc的動態(tài)頁面生成方法。
背景技術:
為了滿足nextgenerationsequencing(簡稱ngs,下一代測序技術)日新月異的業(yè)務發(fā)展需求,在向用戶提供頁面的同時,也需要根據(jù)實際的需求進行動態(tài)生成。而現(xiàn)有技術中向用戶提供的頁面一般都是固定的,每一次變化時,都需要對表單頁面進行重新設計,但是不同時期的頁面生成的需求也不同,而且用戶輸入的方式不僅僅只有文本輸入,還有其他的各個輸入方式,這就導致了頁面的更新非常麻煩,不利于用戶使用以及用戶體驗。
技術實現(xiàn)要素:
為了克服現(xiàn)有技術的不足,本發(fā)明的目的之一在于提供了一種基于mvc動態(tài)頁面生成方法,其能夠解決現(xiàn)有技術中向用戶提供的頁面不能動態(tài)更新或更新麻煩的問題。
本發(fā)明的目的之一采用以下技術方案實現(xiàn):
基于mvc動態(tài)頁面生成方法,包括以下步驟:
s1:元數(shù)據(jù)解析組件獲取表單頁面中每個表單組件所需要的元數(shù)據(jù)并根據(jù)表單組件以及對應的元數(shù)據(jù)生成表單頁面顯示給用戶;
s2:用戶輸入讀取組件接收每個表單組件的用戶輸入數(shù)據(jù)并存儲于數(shù)據(jù)庫中;
s3:頁面渲染組件根據(jù)每個表單組件以及對應的用戶輸入數(shù)據(jù)對表單頁面進行調(diào)整;
s4:信息采集組件對每個表單組件以及對應的用戶輸入數(shù)據(jù)進行解析處理后生成結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)以及對應的表單組件生成新的表單頁面返回給用戶顯示;
其中s2和s3執(zhí)行沒有先后順序。
優(yōu)選地,當生成表單時,還包括s11;資源準備組件獲取用戶語言、當前顯示語言以及語言程序集,并根據(jù)語言程序集將表單頁面的文字轉(zhuǎn)換為用戶語言的文字。
優(yōu)選地,所述s11之前還包括s12:動態(tài)程序集組件獲取加載第三方語言程序集并將其發(fā)送給資源準備組件,使得資源準備組件根據(jù)第三方語言程序集執(zhí)行對應的操作。
優(yōu)選地,元數(shù)據(jù)包括靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),靜態(tài)數(shù)據(jù)存儲于數(shù)據(jù)庫中,動態(tài)數(shù)據(jù)存儲于xml文件中。
為了克服現(xiàn)有技術的不足,本發(fā)明的目的之二在于提供了一種基于mvc動態(tài)頁面生成系統(tǒng),其能夠解決現(xiàn)有技術中向用戶提供的頁面不能動態(tài)更新或更新麻煩的問題。
本發(fā)明的目的之二采用以下技術方案實現(xiàn):
基于mvc動態(tài)頁面生成系統(tǒng),包括:
生成頁面模塊,設于元數(shù)據(jù)解析組件,用于獲取表單頁面中每個表單組件所需要的元數(shù)據(jù)并根據(jù)表單組件以及對應的元數(shù)據(jù)生成表單頁面顯示給用戶;
獲取數(shù)據(jù)模塊,設于用戶輸入讀取組件,用于接收每個表單組件的用戶輸入數(shù)據(jù)并存儲于數(shù)據(jù)庫中;
調(diào)整模塊,設于頁面渲染組件,用于根據(jù)每個表單組件以及對應的用戶輸入數(shù)據(jù)對表單頁面進行調(diào)整;
處理模塊,設于信息采集組件,用于對每個表單組件以及對應的用戶輸入數(shù)據(jù)進行解析處理后生成結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)以及對應的表單組件生成新的表單頁面返回給用戶顯示。
優(yōu)選地,當生成表單頁面時,還包括轉(zhuǎn)換模塊,設于資源準備組件,用于獲取用戶語言、當前顯示語言以及語言程序集,并根據(jù)語言程序集將表單頁面的文字轉(zhuǎn)換為用戶語言的文字。
優(yōu)選地,所述轉(zhuǎn)換模塊之前還包括加載模塊,設于動態(tài)程序集組件,用于獲取加載第三方語言程序集并將其發(fā)送給資源準備組件,使得資源準備組件根據(jù)第三方語言程序集執(zhí)行對應的操作。
優(yōu)選地,元數(shù)據(jù)包括靜態(tài)數(shù)據(jù)和動態(tài)數(shù)據(jù),靜態(tài)數(shù)據(jù)存儲于數(shù)據(jù)庫中,動態(tài)數(shù)據(jù)存儲于xml文件中。
相比現(xiàn)有技術,本發(fā)明的有益效果在于:通過對于表單中的表單組件的元數(shù)據(jù)進行定義并將其分別存儲數(shù)據(jù)庫以及xml文件中,在生成頁面時根據(jù)具體的需求動態(tài)生成頁面,大大降低了頁面更新的復雜性,也滿足了現(xiàn)有的ngs日新月異的業(yè)務發(fā)展需求。
附圖說明
圖1為本發(fā)明提供的一實施例的系統(tǒng)模塊圖;
圖2為本發(fā)明提供的基于mvc動態(tài)頁面生成方法流程圖;
圖3為本發(fā)明提供的基于mvc動態(tài)頁面生成系統(tǒng)模塊圖。
具體實施方式
下面,結合附圖以及具體實施方式,對本發(fā)明做進一步描述:
如圖1所示,本發(fā)明是利用mvc(全稱為modelviewcontroller)技術、反射技術以及xml技術等來實現(xiàn)訂單需求動態(tài)化生成以及動態(tài)生成表單頁面,極大地提高了用戶信息反饋和收集數(shù)據(jù)的速度。在生成動態(tài)表單頁面時,首先需要在系統(tǒng)中對表單頁面中的每個表單組件的元數(shù)據(jù)進行以下定義:
元數(shù)據(jù)包括兩種類型,一種是靜態(tài)數(shù)據(jù),包括靜態(tài)字段和表單屬性信息,另外一種是動態(tài)數(shù)據(jù),包括動態(tài)時間和活動事件等;其中靜態(tài)數(shù)據(jù)存儲在sqlserver關系數(shù)據(jù)庫中,而動態(tài)數(shù)據(jù)存儲在xml文件中。優(yōu)選地,根據(jù)具體的情況,還可以將部分xml文件中的數(shù)據(jù)經(jīng)過序列化處理后存儲于sqlserver關系數(shù)據(jù)庫中,有利于數(shù)據(jù)的存儲。
通過需求調(diào)研和研究,對于ngs需求的采集,支持用戶的輸入方式有很多,比如文本輸入、日期選擇、單選框、多選框、富文本輸入框、文本上傳等各種表單組件。而靜態(tài)數(shù)據(jù)就是指的這些表單組件的原始數(shù)據(jù)、屬性數(shù)據(jù)等。比如,對于多選框,其設置的多選的原始數(shù)據(jù)內(nèi)容是北京、上海、廣州,對于每個多選框的屬性數(shù)據(jù)包括多選框的尺寸、大小、樣式等等。為了能夠提供給用戶輸入的界面,則就必須首先對用戶輸入方式的每個表單組件進行數(shù)據(jù)定義。對于靜態(tài)數(shù)據(jù)可以包括字段類型,所屬表單、字段輸入約束(如長度限制、類型限制等)、字段顯示提示等信息,這些信息是存儲于數(shù)據(jù)庫中的。由于業(yè)務發(fā)展需求的變化,某些表單組件的屬性數(shù)據(jù)可能要發(fā)生變化,而現(xiàn)有的一般均是數(shù)據(jù)與組件均存儲于一表單頁面中,如果需要修改數(shù)據(jù),就需要對整個表單頁面進行修改,從而增大開發(fā)人員的工作量。而在本發(fā)明中,只需要對存儲數(shù)據(jù)庫中的數(shù)據(jù)值“北京”“廣州”等進行修改即可,大大減少了工作人員的工作量。
而動態(tài)數(shù)據(jù),比如字段聯(lián)動、表單提交觸發(fā)事件、事件處理等,比如,對于一按鈕,鼠標單擊、雙擊等觸發(fā)的事件處理、數(shù)據(jù)的存儲、處理等;動態(tài)數(shù)據(jù)是存儲xml文件中。另外,本發(fā)明中所有存儲元數(shù)據(jù)的xml文件,均依照w3c標準格式,以utf-16的編碼格式存儲;每個xml文件單獨存儲。
比如,在表單設計時,考慮到表單與其他頁面的交互,在配置節(jié)點中通過querystrings集合節(jié)點來定義頁面的輸入?yún)?shù)。而formdefaultvalues節(jié)點則定義了各個表單字段的默認值、actions節(jié)點定義頁面提交前、提交的事件處理程序(程序集)、nextactions節(jié)點定義頁面提交后的事件處理程序。其中,querystrings、formdefaultvalues、actions、nextactions節(jié)點是現(xiàn)有技術中已經(jīng)存在的類,并不是本發(fā)明的發(fā)明點。
再比如,對于字段聯(lián)動、樣式變化等自主行為的定義的設計:sources主要定義了來源數(shù)據(jù)的屬性變化、targets節(jié)點定義了目標字段、而setter則會指定受影響的輸入控件/字段的屬性、值或者樣式做出的更改。比如,當數(shù)據(jù)源大于、等于或小于設置的值時,目標輸入組件的屬性或樣式會相應地改變。一般來說,這些自主行為包括聯(lián)動、限制輸入、隱藏或顯示、樣式變化或其他復雜行為。
該基于mvc動態(tài)頁面生成方法應用于一系統(tǒng),該系統(tǒng)不僅存儲上述元數(shù)據(jù)的定義,還設置了元數(shù)據(jù)解析組件,元數(shù)據(jù)組件用于生成表單頁面顯示給用戶。也即是,在完成每個表單組件的元數(shù)據(jù)設計后,在頁面生成的過程中,通過元數(shù)據(jù)解析組件用于讀取數(shù)據(jù)庫以及xml文件中存儲的元數(shù)據(jù)并將其轉(zhuǎn)換為可執(zhí)行的代碼,并裝載到內(nèi)存中,將元數(shù)據(jù)與對應的表單組件進行綁定,通過mvc技術動態(tài)生成對應的頁面。該元數(shù)據(jù)解析組件采用了序列化、反序列化以及反射技術等技術,將元數(shù)據(jù)從數(shù)據(jù)庫、xml文件中讀取出來,并將其元數(shù)據(jù)與對應的對象和頁面變量進行綁定,從而生成表單對象,最終生成對應的表單頁面。
優(yōu)選地,系統(tǒng)還包括資源準備組件??紤]到ngs的發(fā)展需求,向用戶提供的輸入界面可能會支持多地區(qū)多語言。因此,本發(fā)明通過資源準備組件來調(diào)用系統(tǒng)中已經(jīng)存在的語言程序集并加載,從而將當前用戶的語言轉(zhuǎn)換為用戶所需要的語言。另外,本發(fā)明還包括動態(tài)程序集加載組件,該表單組件是用于調(diào)用外部提供的動態(tài)程序集。比如,當前用戶所需要的語言為日語,但是系統(tǒng)中并不支持日語,則可以通過加載第三方語言程序集來實現(xiàn)對日語的支持。此時,動態(tài)程序集加載組件用于加載第三方語言程序集,從而實現(xiàn)對語言的轉(zhuǎn)換。也即是,該系統(tǒng)實現(xiàn)了表單頁面語言轉(zhuǎn)換的功能,可以支持多地區(qū)多語言。本發(fā)明中多語言支持采用cookie和客戶端瀏覽器語言來判斷當前用戶的語言,并根據(jù)語言從數(shù)據(jù)中讀取對應的顯示字符流顯示在用戶的解密上??衫胷azor技術,采用t關鍵字來進行多語言的轉(zhuǎn)換。
優(yōu)選地,系統(tǒng)還包括頁面渲染組件和用戶輸入讀取組件,用戶輸入讀取組件是用于獲取用戶輸入數(shù)據(jù)并存儲的,而頁面渲染組件是用于根據(jù)用戶輸入數(shù)據(jù)對表單頁面屬性進行調(diào)整的,具體為根據(jù)表單組件的屬性數(shù)據(jù)的變化來調(diào)整整個表單頁面。比如,采用了mvc中的custombinder類,將頁面對象進行序列化和反序列化來進行客戶端和服務器之間的數(shù)據(jù)和操作的交互。也即是,用戶通過系統(tǒng)提供的頁面來輸入對應的數(shù)據(jù),該用戶輸入讀取組件用于讀取用戶輸入的數(shù)據(jù),并根據(jù)數(shù)據(jù)以及對應的表單組件來判斷客戶端與服務器之間的數(shù)據(jù)交互,比如存儲、計算、驗證等。比如文本輸入,用戶輸入的文本較多時,文本輸入框可以根據(jù)輸入數(shù)據(jù)的多少進行變化其大小,則通過頁面渲染組件來實現(xiàn)的。
系統(tǒng)還包括信息采集組件,用于接收用戶通過頁面輸入的數(shù)據(jù),并根據(jù)表單組件的元數(shù)據(jù)定義將其轉(zhuǎn)換為對應的結果數(shù)據(jù),并將結果數(shù)據(jù)與對應的表單組件進行綁定,通過采用mvc技術重新生成頁面,并返回到客戶端,供用戶查看。另外,該信息采集組件還將處理后的結果數(shù)據(jù)存儲于數(shù)據(jù)庫中。
如圖2所示,本發(fā)明提供了一種基于mvc動態(tài)頁面生成方法,包括以下步驟:
s1:元數(shù)據(jù)解析組件獲取表單頁面中每個表單組件所需要的元數(shù)據(jù)并根據(jù)表單組件以及對應的元數(shù)據(jù)生成表單頁面顯示給用戶。其中,每個表單組件所需要的元數(shù)據(jù)是通過系統(tǒng)預先進行自定義得到,當需要向用戶提供輸入界面時,通過動態(tài)生成頁面的方式來向用戶提供輸入界面?,F(xiàn)有技術中,一般這種用戶輸入界面中的表單是固定不便的,如果需要修改就需要對整個頁面進行調(diào)整,這樣對于現(xiàn)有ngs不斷更新的需求來來說,更新操作復雜。通過本發(fā)明將表單頁面中的每個表單組件的數(shù)據(jù)定義均存儲數(shù)據(jù)庫或xml文件中,當需要生成表單頁面時,直接根據(jù)需求來動態(tài)生成用戶所需要的表單頁面即可。這樣就解決了現(xiàn)有技術中由于輸入界面的固定,而不能夠動態(tài)更新的問題。
s2:用戶輸入讀取組件來接收每個表單組件的用戶輸入數(shù)據(jù)并存儲數(shù)據(jù)庫中。用戶在對應的表單組件上輸入對應的數(shù)據(jù)后,通過用戶讀取表單組件進行采集數(shù)據(jù),并將用戶輸入數(shù)據(jù)存儲數(shù)據(jù)庫中。
s3:頁面渲染表單組件根據(jù)每個表單組件以及對應的用戶輸入數(shù)據(jù)對表單頁面進行調(diào)整。例如,在實際的使用時,對于多行文本輸入框,針對用戶輸入文字的多少,其文本框的大小不同,則表單頁面的屬性數(shù)據(jù)也會隨著用戶輸入的數(shù)據(jù)進行相對應的調(diào)整,從而能夠給用戶更好的體驗。
s4:信息采集表單組件對每個表單組件以及對應的用戶輸入數(shù)據(jù)進行解析處理后生成結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)以及對應的表單組件生成新的表單頁面返回給用戶顯示。當用戶完成輸入數(shù)據(jù)后,由于表單組件與表單組件之間的字段聯(lián)動、事件等的存在,需要對輸入的數(shù)據(jù)以及表單組件的定義來解析處理,并得到每個表單組件的結果數(shù)據(jù),然后將結果數(shù)據(jù)與對應的表單組件綁定,生成新的表單返回給用戶顯示,供用戶查看。
優(yōu)選地,所述s2和s3之間沒有先后順序,比如在實際的使用當中,用戶輸入一個表單組件的數(shù)據(jù)時,其保存數(shù)據(jù)與調(diào)整表單組件的屬性之間是同時發(fā)生的,沒有執(zhí)行的先后順序。
優(yōu)選地,當生成表單時,還包括s11;資源準備組件獲取用戶語言、當前顯示語言以及語言程序集,并根據(jù)語言程序集將表單頁面的文字轉(zhuǎn)換為用戶語言的文字。
另外,s11之前還包括s12:動態(tài)程序集組件第三方語言程序集并將其發(fā)送給資源準備組件。也即是說,當系統(tǒng)不支持某一語言時,可通過調(diào)用第三方語言程序集來加載到系統(tǒng)中,從而使得表單頁面中的文字為用戶所需要的語言文字。
本發(fā)明將表單組件的元數(shù)據(jù)通過預先設計并存儲于數(shù)據(jù)庫以及xml文件中,然后根據(jù)具體的需求進行動態(tài)生成頁面,從而實現(xiàn)了頁面動態(tài)更新的功能,滿足了ngs日新月異的業(yè)務需求。而對于本發(fā)明中所涉及到的序列化、反序列化以及反射技術等均是現(xiàn)有比較成熟的技術,并不是本發(fā)明的發(fā)明點。
如圖3所示,本發(fā)明提供了一種基于mvc動態(tài)頁面生成系統(tǒng),包括:
生成頁面模塊,設于元數(shù)據(jù)解析組件,用于獲取表單頁面中每個表單組件所需要的元數(shù)據(jù)并根據(jù)表單組件以及對應的元數(shù)據(jù)生成表單頁面顯示給用戶;
獲取數(shù)據(jù)模塊,設于用戶輸入讀取組件,用于接收每個表單組件的用戶輸入數(shù)據(jù)并存儲于數(shù)據(jù)庫中;
調(diào)整模塊,設于頁面渲染組件,用于根據(jù)每個表單組件以及對應的用戶輸入數(shù)據(jù)對表單頁面進行調(diào)整;
處理模塊,設于信息采集組件,用于對每個表單組件以及對應的用戶輸入數(shù)據(jù)進行解析處理后生成結果數(shù)據(jù),并根據(jù)結果數(shù)據(jù)以及對應的表單組件生成新的表單頁面返回給用戶顯示。
對本領域的技術人員來說,可根據(jù)以上描述的技術方案以及構思,做出其它各種相應的改變以及形變,而所有的這些改變以及形變都應該屬于本發(fā)明權利要求的保護范圍之內(nèi)。