本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體地,涉及一種表單處理方法及服務(wù)器、客戶端。
背景技術(shù):
在線表單是一個(gè)網(wǎng)站和訪問(wèn)者開(kāi)展互動(dòng)的窗口。制式表單是在線表單的一種,其與非制式表單相比,表格布局、文字等內(nèi)容更接近于實(shí)際生活中填寫(xiě)的各類(lèi)表格,例如,如申請(qǐng)表、申報(bào)表等。制式表單可以用來(lái)在網(wǎng)頁(yè)中發(fā)送數(shù)據(jù)。例如,基于制式表單,用戶可以在網(wǎng)頁(yè)輸入用戶名、密碼實(shí)現(xiàn)注冊(cè)或登陸功能。
一個(gè)制式表單的代碼有三個(gè)基本組成部分:控件代碼、非控件代碼以及JavaScript腳本。其中,控件是指網(wǎng)頁(yè)中包括的文本框、密碼框、隱藏域、復(fù)選框、按鈕等元素;JavaScript腳本是運(yùn)行控件的代碼;非控件則是指網(wǎng)頁(yè)中的表格、文字等元素。
在制式表單中,控件源碼是有規(guī)律的,可以按一定格式規(guī)范的提取數(shù)據(jù)。但表格布局和文字的源碼是沒(méi)有規(guī)律的,沒(méi)辦法提取數(shù)據(jù),因此,非控件的源碼就只能直接存儲(chǔ)?,F(xiàn)有技術(shù)中,為了統(tǒng)一存儲(chǔ)控件和和非控件的所有信息,通常是直接控件和非控件的源碼,即將整個(gè)制式表單存儲(chǔ)為網(wǎng)頁(yè)源碼格式。所述網(wǎng)頁(yè)源碼包括了控件的代碼、JavaScript腳本和非控件的代碼??蛻舳藦姆?wù)器請(qǐng)求表單時(shí),直接獲取該網(wǎng)頁(yè)源碼??蛻舳嘶谠摼W(wǎng)頁(yè)源碼可以獲得該制式表單的控件的代碼、非控件的代碼以及JavaScript腳本。進(jìn)一步地,該客戶端針對(duì)各類(lèi)代碼分別進(jìn)行操作,例如,繪制頁(yè)面、渲染、運(yùn)行JavaScript腳本。
由于現(xiàn)有的服務(wù)器將制式表單的各類(lèi)代碼作為一個(gè)整體進(jìn)行存儲(chǔ),對(duì)于不同類(lèi)的代碼服務(wù)器不感知,導(dǎo)致服務(wù)器在對(duì)制式表單的代碼進(jìn)行了任何改動(dòng)的情況下,均需要對(duì)改動(dòng)后的制式表單的所有代碼重新進(jìn)行存儲(chǔ),增加了服務(wù)器內(nèi)存和帶寬的負(fù)載。并且,對(duì)于制式表單各類(lèi)代碼的處理只能由客戶端進(jìn)行,處理效率較低。
由上述可知,現(xiàn)有技術(shù)中存在服務(wù)器對(duì)于制式表單的各類(lèi)代碼不感知的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種表單處理方法及服務(wù)器、客戶端,用以解決服務(wù)器對(duì)于制式表單的各類(lèi)代碼不感知的技術(shù)問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種表單處理方法,包括:
服務(wù)器獲取制式表單的代碼;
所述服務(wù)器對(duì)所述制式表單的代碼進(jìn)行分類(lèi);
所述服務(wù)器對(duì)所述制式表單的不同類(lèi)的代碼分別進(jìn)行存儲(chǔ)。
可選地,所述方法還包括:
所述服務(wù)器對(duì)第一類(lèi)代碼進(jìn)行修改;所述第一類(lèi)代碼為所述制式表單的代碼中的任一類(lèi)代碼;
所述服務(wù)器將修改后的第一類(lèi)代碼重新進(jìn)行存儲(chǔ)。
可選地,所述制式表單的代碼包括控件代碼,所述方法還包括:
所述服務(wù)器接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;
所述服務(wù)器獲取所述控件代碼,并基于控件權(quán)限信息對(duì)所述控件代碼進(jìn)行調(diào)整;
所述服務(wù)器發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括調(diào)整后的所述控件代碼。
可選地,所述方法還包括:
所述服務(wù)器接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;
所述服務(wù)器發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息。
可選地,所述制式表單的各類(lèi)代碼包括以下至少一種代碼:控件代碼,非控件代碼,JavaScript腳本。
可選地,所述服務(wù)器對(duì)所述制式表單的不同類(lèi)的代碼分別進(jìn)行存儲(chǔ)包括:
所述服務(wù)器基于通用傳輸格式存儲(chǔ)控件代碼和JavaScript腳本。
本發(fā)明還提供另一種表單處理方法,包括:
客戶端向服務(wù)器發(fā)送表單請(qǐng)求消息,所述表單請(qǐng)求消息用于獲取所述服務(wù)器中的制式表單的代碼;
所述客戶端接收所述服務(wù)器發(fā)送的響應(yīng)消息,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息;其中,所述服務(wù)器分類(lèi)存儲(chǔ)有所述制式表單的各類(lèi)代碼;
所述客戶端根據(jù)所述指示信息處理所述制式表單的各類(lèi)代碼。
可選地,所述制式表單的各類(lèi)代碼包括控件代碼,非控件代碼以及JavaScript腳本;所述客戶端根據(jù)所述指示信息處理所述制式表單的各類(lèi)代碼,包括:
所述客戶端根據(jù)所述指示信息利用所述非控件代碼繪制表單頁(yè)面;
在繪制完所述表單頁(yè)面后,根據(jù)所述控件代碼進(jìn)行控件渲染;
在所述控件渲染完成后,運(yùn)行所述JavaScript腳本。
可選地,所述響應(yīng)消息包括服務(wù)器根據(jù)控件權(quán)限信息調(diào)整后的控件代碼;
所述在繪制完所述表單頁(yè)面后,根據(jù)所述控件代碼進(jìn)行控件渲染包括:
所述客戶端根據(jù)調(diào)整后的控件代碼進(jìn)行控件渲染。
本發(fā)明還提供一種服務(wù)器,包括:
獲取單元,用于獲取制式表單的代碼;
分類(lèi)單元,用于對(duì)所述制式表單的代碼進(jìn)行分類(lèi);
存儲(chǔ)單元,用于對(duì)所述制式表單的不同類(lèi)的代碼分別進(jìn)行存儲(chǔ)。
可選地,還包括:
修改單元,用于對(duì)第一類(lèi)代碼進(jìn)行修改;所述第一類(lèi)代碼為所述制式表單的代碼中的任一類(lèi)代碼;
所述存儲(chǔ)單元還用于,將修改后的第一類(lèi)代碼重新進(jìn)行存儲(chǔ)。
可選地,所述制式表單的代碼包括控件代碼,所述客戶端還包括:
接收單元,用于接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;
調(diào)整單元,用于獲取所述控件代碼,并基于控件權(quán)限信息對(duì)所述控件代碼進(jìn)行調(diào)整;
發(fā)送單元,用于發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括調(diào)整后的所述控件代碼。
可選地,還包括:
接收單元,用于接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;
發(fā)送單元,用于發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息。
可選地,所述制式表單的各類(lèi)代碼包括控件代碼以及JavaScript腳本;所述存儲(chǔ)單元具體用于:基于通用傳輸格式存儲(chǔ)控件代碼和JavaScript腳本。
本發(fā)明還提供一種客戶端,包括:
發(fā)送單元,用于向服務(wù)器發(fā)送表單請(qǐng)求消息,所述表單請(qǐng)求消息用于獲取所述服務(wù)器中的制式表單的代碼;
接收單元,用于接收所述服務(wù)器發(fā)送的響應(yīng)消息,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息;其中,所述服務(wù)器分類(lèi)存儲(chǔ)有所述制式表單的各類(lèi)代碼;
處理單元,用于根據(jù)所述指示信息處理所述制式表單的各類(lèi)代碼。
可選地,所述制式表單的各類(lèi)代碼包括控件代碼,非控件代碼以及JavaScript腳本;所述處理單元具體用于:
根據(jù)所述指示信息利用所述非控件代碼繪制表單頁(yè)面;
在繪制完所述表單頁(yè)面后,根據(jù)所述控件代碼進(jìn)行控件渲染;
在所述控件渲染完成后,運(yùn)行所述JavaScript腳本。
可選地,所述響應(yīng)消息包括服務(wù)器根據(jù)控件權(quán)限信息調(diào)整后的控件代碼;所述處理單元具體用于:
根據(jù)調(diào)整后的控件代碼進(jìn)行控件渲染。
通過(guò)上述技術(shù)方案,服務(wù)器獲取到制式表單的代碼后,對(duì)所述代碼進(jìn)行分類(lèi)存儲(chǔ),解決了服務(wù)器對(duì)于制式表單的各類(lèi)代碼不感知的技術(shù)問(wèn)題。進(jìn)而,服務(wù)器在對(duì)制式表單的某一類(lèi)代碼進(jìn)行改動(dòng)的情況下,可以對(duì)改動(dòng)的一類(lèi)代碼重新進(jìn)行存儲(chǔ),無(wú)需對(duì)制式表單的全部代碼重新進(jìn)行存儲(chǔ),降低了服務(wù)器內(nèi)存和帶寬的負(fù)載。并且,由于服務(wù)器可以感知制式表單的各類(lèi)代碼,因此,針對(duì)不同類(lèi)代碼的部分處理可以由服務(wù)器預(yù)先進(jìn)行,進(jìn)而提高了客戶端在獲取到制式表單的代碼后的處理效率。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明,但并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
圖1是現(xiàn)有技術(shù)中的一種系統(tǒng)架構(gòu)圖;
圖2是本發(fā)明實(shí)施例提供的一種表單處理方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的另一種表單處理方法的流程示意圖;
圖4是本發(fā)明實(shí)施例提供的又一種表單處理方法的流程示意圖;
圖5是本發(fā)明實(shí)施例提供的一種服務(wù)器的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提供的一種客戶端的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本發(fā)明,并不用于限制本發(fā)明。
為了使本領(lǐng)域的技術(shù)人員更容易理解本發(fā)明實(shí)施例對(duì)現(xiàn)有技術(shù)的改進(jìn)之處,首先對(duì)現(xiàn)有技術(shù)中相關(guān)的技術(shù)方案進(jìn)行簡(jiǎn)單介紹。
如圖1所示,客戶端通過(guò)互聯(lián)網(wǎng)與服務(wù)器相連,所述客戶端可以是計(jì)算機(jī)、智能手機(jī)、平板電腦等安裝有瀏覽器的電子設(shè)備。所述服務(wù)器可以是網(wǎng)站服務(wù)器,例如網(wǎng)頁(yè)Web服務(wù)器,或者CDN(Content Delivery Network,內(nèi)容分發(fā)網(wǎng)絡(luò))服務(wù)器等,用于向?yàn)g覽器提供文檔。
其中,服務(wù)器內(nèi)存儲(chǔ)有制式表單的網(wǎng)站源碼??蛻舳嗽跒g覽器中顯示制式表單的過(guò)程主要包括如下幾步:
加載:根據(jù)請(qǐng)求的URL(Uniform Resource Locator,統(tǒng)一資源定位符)進(jìn)行域名解析,向該服務(wù)器發(fā)起表單請(qǐng)求消息,并接收服務(wù)器返回的制式表單的網(wǎng)頁(yè)源碼。其中,該網(wǎng)頁(yè)源碼可以包括HTML(HyperText Markup Language,超文本標(biāo)記語(yǔ)言)代碼、JavaScript腳本、CSS(Cascading Style Sheets,層疊樣式表)源碼。其中,該HTML代碼包括制式表單的控件的代碼。
解析:對(duì)獲取到的網(wǎng)頁(yè)源碼進(jìn)行語(yǔ)法解析,建立相應(yīng)的內(nèi)部數(shù)據(jù)結(jié)構(gòu),例如,HTML的DOM(Document Object Model,文檔對(duì)象模型)樹(shù)、JavaScript的對(duì)象屬性表、CSS的樣式規(guī)則等。
渲染:構(gòu)建渲染樹(shù),對(duì)各個(gè)元素進(jìn)行位置計(jì)算、樣式計(jì)算等,然后根據(jù)渲染樹(shù)對(duì)頁(yè)面進(jìn)行渲染,即網(wǎng)頁(yè)顯示各個(gè)元素的過(guò)程,該過(guò)程也稱為頁(yè)面繪制。
現(xiàn)有技術(shù)中,由于網(wǎng)頁(yè)服務(wù)器將制式表單的所有代碼作為一個(gè)整體進(jìn)行存儲(chǔ),導(dǎo)致網(wǎng)頁(yè)服務(wù)器在對(duì)任何部分的代碼進(jìn)行了修改的情況下,均需要對(duì)修改后的制式表單的所有代碼全部重新存儲(chǔ),造成服務(wù)器內(nèi)存和帶寬的負(fù)載過(guò)重。并且,在制式表單的控件需要根據(jù)權(quán)限進(jìn)行顯示或者隱藏時(shí),由于網(wǎng)頁(yè)服務(wù)器不感知制式表單的控件代碼,只能由客戶端在加載制式表單的網(wǎng)頁(yè)源碼后,再?gòu)姆?wù)器獲取控件的權(quán)限信息,這樣,客戶端可能會(huì)對(duì)制式表單的控件先進(jìn)行渲染再根據(jù)權(quán)限信息進(jìn)行隱藏,導(dǎo)致控件出現(xiàn)“閃爍”的情形。并且,由于客戶端對(duì)于JavaScript腳本以及DOM元素的加載順序不可控且在運(yùn)行JavaScript腳本的同時(shí)不能加載DOM元素,因此,客戶端可能在加載DOM元素與運(yùn)行JavaScript腳本兩者之間多次切換執(zhí)行,降低了網(wǎng)頁(yè)渲染的效率且易出現(xiàn)異常。
由上述描述可知,服務(wù)器對(duì)制式表單的各類(lèi)代碼的不感知,可能造成服務(wù)器內(nèi)存與寬帶的負(fù)載過(guò)重、控件閃爍以及瀏覽器渲染效率較低的問(wèn)題。為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供一種表單處理方法,如圖2所示,該方法包括:
S201、服務(wù)器獲取制式表單的代碼。
具體地,制式表單的代碼是由研發(fā)人員首先在表單設(shè)計(jì)器中繪制,在繪制完成并執(zhí)行保存時(shí),再傳遞給服務(wù)器的代碼。
值得說(shuō)明的是,制式表單可以包括的元素有很多。本發(fā)明實(shí)施例將制式表單中用于與用戶進(jìn)行交互的元素,例如,文本框、密碼框、復(fù)選框等,稱為控件,其他制式表單中的元素,例如,表格、文字、圖片等,稱為非控件。JavaScript腳本是制式表單中用于運(yùn)行控件的代碼。
這樣,上述步驟S201中,服務(wù)器獲取到的制式表單的代碼包括控件的代碼、非控件的代碼以及JavaScript腳本的代碼。其中,程序員在編寫(xiě)制式表單的代碼時(shí),對(duì)于制式表單的不同類(lèi)元素的代碼可以采用不同的格式。例如,全部采用HTML格式編寫(xiě)控件和非控件的代碼;或者采用通用格式編寫(xiě)控件和JavaScript腳本的代碼,所述通用格式包括JSON(JavaScript Object Notation,JavaScript對(duì)象表示法)格式和XML格式,采用HTML或者CCS編寫(xiě)非控件的代碼。
S202、該服務(wù)器對(duì)所述制式表單的代碼進(jìn)行分類(lèi)。
具體地,針對(duì)不同的代碼編寫(xiě)方式,服務(wù)器可以采用不同的方法對(duì)制式表單的代碼進(jìn)行分類(lèi)。
在本發(fā)明實(shí)施例的一種可能的實(shí)現(xiàn)方式中,服務(wù)器在上述步驟S201中獲取到的制式表單的代碼可以包括采用JSON格式編寫(xiě)的控件的代碼、采用XML編寫(xiě)的JavaScript腳本的代碼以及采用HTML編寫(xiě)的非控件的代碼。在此種情況下,該服務(wù)器在步驟S202中即可以根據(jù)代碼的格式進(jìn)行分類(lèi)。也就是說(shuō),服務(wù)器在檢測(cè)所述制式表單的代碼格式時(shí),確定JSON格式的代碼為控件的代碼,XML格式的代碼為JavaScript腳本的代碼,HTML格式的代碼為非控件的代碼。
值得說(shuō)明的是,采用JSON格式或者XML格式編寫(xiě)的代碼的冗余小于采用XML格式編寫(xiě)的代碼冗余。也就是說(shuō),上述實(shí)現(xiàn)方式與現(xiàn)有技術(shù)針對(duì)制式表單的代碼全部采用HTML格式編寫(xiě)的方式相比,減少了數(shù)據(jù)量,有利于傳輸。
在本發(fā)明實(shí)施例的另一種可能的實(shí)現(xiàn)方式中,服務(wù)器上述步驟S201中獲取到的制式表帶的代碼可以包括HTML格式的控件代碼、非控件代碼以及JavaScript腳本的代碼。在此種情況下,該服務(wù)器在步驟S202中即可以檢測(cè)代碼的標(biāo)簽、ID等信息來(lái)對(duì)代碼進(jìn)行分類(lèi)。值得說(shuō)明的是,控件的代碼的ID和標(biāo)簽與非控件代碼是不同的,例如,對(duì)于文本框、密碼框等控件,其標(biāo)簽為input,則服務(wù)器在檢測(cè)到標(biāo)簽為input的代碼時(shí),即可確定該代碼為控件的代碼。
S203、該服務(wù)器對(duì)所述制式表單的不同類(lèi)的代碼分別進(jìn)行存儲(chǔ)。
示例地,對(duì)于控件的代碼、非控件的代碼以及JavaScript腳本代碼,該服務(wù)器分別進(jìn)行存儲(chǔ),每一類(lèi)代碼存儲(chǔ)在不同的區(qū)域。
采用上述技術(shù)方案,服務(wù)器獲取到制式表單的代碼后,對(duì)所述代碼進(jìn)行分類(lèi)存儲(chǔ),解決了服務(wù)器對(duì)于制式表單的各類(lèi)代碼不感知的技術(shù)問(wèn)題。進(jìn)而,服務(wù)器在對(duì)制式表單的某一類(lèi)代碼進(jìn)行改動(dòng)的情況下,可以對(duì)改動(dòng)的一類(lèi)代碼重新進(jìn)行存儲(chǔ),無(wú)需對(duì)制式表單的全部代碼重新進(jìn)行存儲(chǔ),降低了服務(wù)器內(nèi)存和帶寬的負(fù)載。并且,由于服務(wù)器可以感知制式表單的各類(lèi)代碼,因此,針對(duì)不同類(lèi)代碼的部分處理可以由服務(wù)器預(yù)先進(jìn)行,進(jìn)而提高了客戶端在獲取到制式表單的代碼后的處理效率。
具體地,在本發(fā)明實(shí)施例中,上述方法還可以包括:該服務(wù)器對(duì)第一類(lèi)代碼進(jìn)行修改;該第一類(lèi)代碼為所述制式表單的代碼中的任一類(lèi)代碼;該服務(wù)器將修改后的第一類(lèi)代碼重新進(jìn)行存儲(chǔ)。
示例地,服務(wù)器在對(duì)制式表單的控件的代碼進(jìn)行了修改后,可以將修改后的代碼重新存儲(chǔ),非控件的代碼以及JavaScript腳本的代碼保持不變。這樣,相比現(xiàn)有技術(shù)對(duì)任一部分代碼進(jìn)行修改后均需要全部重新存儲(chǔ)制式表單的代碼,本發(fā)明實(shí)施例降低了服務(wù)器的內(nèi)存以及帶寬負(fù)載。
在所述制式表單的代碼包括控件代碼的情況下,上述方法還可以包括:該服務(wù)器接收客戶端發(fā)送的表單請(qǐng)求消息;該表單請(qǐng)求消息用于獲取所述制式表單的代碼;該服務(wù)器獲取該控件代碼,并基于控件權(quán)限信息對(duì)該控件代碼進(jìn)行調(diào)整;該服務(wù)器發(fā)送用于響應(yīng)該表單請(qǐng)求消息的響應(yīng)消息給該客戶端,該響應(yīng)消息包括調(diào)整后的所述控件代碼。
示例地,制式表單的控件包括文本框、密碼框以及復(fù)選框,其中,所述文本框的權(quán)限為初始載入時(shí)隱藏。在本發(fā)明實(shí)施例中,服務(wù)器在接收到客戶端的表單請(qǐng)求消息后,根據(jù)存儲(chǔ)的控件權(quán)限信息對(duì)存儲(chǔ)的控件的代碼進(jìn)行調(diào)整,使得控件中的文本框在初始載入時(shí)隱藏。這樣,該客戶端在接收到調(diào)整后的控件代碼后,直接隱藏控件中的文本框,不對(duì)文本框進(jìn)行渲染,從而避免了現(xiàn)有技術(shù)中可能出現(xiàn)的控件“閃爍”的情形。
在本發(fā)明實(shí)施例的一種可能的實(shí)現(xiàn)方式中,服務(wù)器向客戶端發(fā)送的用于響應(yīng)該表單請(qǐng)求消息的響應(yīng)消息中還可以包括用于指示制式表單的各類(lèi)代碼的處理順序的指示信息??蛻舳嗽诮邮盏皆擁憫?yīng)消息后可以根據(jù)該指示信息指示的處理順序?qū)χ剖奖韱蔚母黝?lèi)代碼進(jìn)行處理。
示例地,該指示信息指示該客戶端先利用制式表單的非控件代碼繪制表單頁(yè)面;在繪制完所述表單頁(yè)面后,根據(jù)制式表單的控件代碼進(jìn)行控件渲染;在所述控件渲染完成后,運(yùn)行所述JavaScript腳本。這樣,由于代碼的執(zhí)行順序可控,避免了現(xiàn)有技術(shù)中在控件渲染和運(yùn)行JavaScript腳本之間多次切換的情形出現(xiàn),提高了客戶端瀏覽器渲染的效率。
上述只是舉例說(shuō)明,該指示信息也可以指示客戶端先運(yùn)行JavaScript腳本,再渲染控件,本發(fā)明對(duì)此不做限定。
本發(fā)明實(shí)施例還提供另一種表單處理方法,該方法的執(zhí)行主體是客戶端,如圖3所示,該方法包括:
S301、客戶端向服務(wù)器發(fā)送表單請(qǐng)求消息,該表單請(qǐng)求消息用于獲取該服務(wù)器中的制式表單的代碼。
S302、該客戶端接收該服務(wù)器發(fā)送的響應(yīng)消息,該響應(yīng)消息包括該制式表單的各類(lèi)代碼以及用于指示該各類(lèi)代碼的處理順序的指示信息;其中,該服務(wù)器分類(lèi)存儲(chǔ)有該制式表單的各類(lèi)代碼。
S303、該客戶端根據(jù)該指示信息處理該制式表單的各類(lèi)代碼。
采用上述方法,由于代碼的執(zhí)行順序可控,避免了現(xiàn)有技術(shù)中在控件渲染和運(yùn)行JavaScript腳本之間多次切換的情形出現(xiàn),提高了客戶端瀏覽器渲染的效率。
示例地,該制式表單的各類(lèi)代碼包括控件代碼、非控件代碼以及JavaScript腳本的代碼,則上述步驟S303可以包括:該客戶端根據(jù)該指示信息利用該非控件代碼繪制表單頁(yè)面;在繪制完該表單頁(yè)面后,根據(jù)該控件代碼進(jìn)行控件渲染;在該控件渲染完成后,運(yùn)行該JavaScript腳本。
可選地,該響應(yīng)消息還包括服務(wù)器根據(jù)控件權(quán)限信息調(diào)整后的控件代碼,則客戶端在進(jìn)行控件渲染時(shí),可以根據(jù)調(diào)整后的控件代碼進(jìn)行控件渲染。這樣,對(duì)于需要隱藏的控件,客戶端可以不進(jìn)行渲染,避免了現(xiàn)有技術(shù)中對(duì)控件先渲染再隱藏導(dǎo)致的“閃爍”情形的出現(xiàn)。
采用上述方法,由于服務(wù)器對(duì)于制式表單的分類(lèi)存儲(chǔ),使得服務(wù)器可以對(duì)不同類(lèi)代碼先進(jìn)行部分預(yù)處理,進(jìn)而提高客戶端在接收到制式表單的代碼后的處理效率。
為了使本領(lǐng)域技術(shù)人員更加理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面通過(guò)詳細(xì)的例子對(duì)本發(fā)明實(shí)施例提供的一種表單的處理方法進(jìn)行詳細(xì)說(shuō)明,如圖4所示,包括:
S401、客戶端向服務(wù)器發(fā)送表單請(qǐng)求消息。
其中,該表單請(qǐng)求消息用于獲取服務(wù)器存儲(chǔ)的制式表達(dá)的代碼。
S402、服務(wù)器接收該表單請(qǐng)求消息,并確定該制式表單的控件代碼。
其中,服務(wù)器分類(lèi)存儲(chǔ)了制式表單的各類(lèi)代碼。該制式表單的各類(lèi)代碼至少包括:控件代碼、非控件代碼、JavaScript腳本代碼中的至少一種。
S403、服務(wù)器根據(jù)控件權(quán)限信息對(duì)該控件代碼進(jìn)行調(diào)整。
例如,對(duì)于權(quán)限為初始載入時(shí)隱藏的控件,服務(wù)器可以調(diào)整該控件的代碼使得該控件在客戶端的瀏覽器中直接隱藏。
S404、該服務(wù)器向客戶端發(fā)送響應(yīng)消息,該響應(yīng)消息包括該制式表單的各類(lèi)代碼以及指示各類(lèi)代碼的處理順序的指示信息的響應(yīng)消息,所述各類(lèi)代碼包括調(diào)整后的控件代碼。
S405、該客戶端接收該響應(yīng)消息,并根據(jù)該指示信息先利用非控件代碼繪制頁(yè)面。
S406、該客戶端在繪制頁(yè)面完成后,利用調(diào)整后的控件代碼進(jìn)行渲染。
值得說(shuō)明的是,在控件代碼以及JavaScript腳本的格式為JSON或者XML的情況下,該客戶端需要首先將控件代碼以及JavaScript腳本的代碼轉(zhuǎn)換為HTML格式。
具體地,對(duì)于權(quán)限為隱藏的控件,該客戶端可以直接隱藏而無(wú)需進(jìn)行渲染,避免了先渲染再隱藏導(dǎo)致的控件“閃爍”情形的出現(xiàn)。
S407、該客戶端在渲染完成后,運(yùn)行JavaScript腳本。
由上述步驟S405至S407可知,客戶端處理制式表單的各類(lèi)代碼的順序是可控的,避免了現(xiàn)有技術(shù)中在控件渲染和運(yùn)行JavaScript腳本之間多次切換的情形出現(xiàn),提高了客戶端瀏覽器渲染的效率。
對(duì)于上述方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制。例如,該客戶端先運(yùn)行JavaScript腳本,再渲染控件。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明所必須的。
本發(fā)明實(shí)施例還提供一種服務(wù)器50,用于實(shí)施上述方法實(shí)施例中對(duì)應(yīng)的步驟,如圖5所示,該服務(wù)器50包括:
獲取單元501,用于獲取制式表單的代碼;
分類(lèi)單元502,用于對(duì)所述制式表單的代碼進(jìn)行分類(lèi);
存儲(chǔ)單元503,用于對(duì)所述制式表單的不同類(lèi)的代碼分別進(jìn)行存儲(chǔ)。
采用上述服務(wù)器50,該服務(wù)器獲取到制式表單的代碼后,對(duì)所述代碼進(jìn)行分類(lèi)存儲(chǔ),解決了服務(wù)器對(duì)于制式表單的各類(lèi)代碼不感知的技術(shù)問(wèn)題,進(jìn)而服務(wù)器在對(duì)制式表單的某一類(lèi)代碼進(jìn)行改動(dòng)的情況下,可以對(duì)改動(dòng)的一類(lèi)代碼重新進(jìn)行存儲(chǔ),無(wú)需對(duì)制式表單的全部代碼重新進(jìn)行存儲(chǔ),降低了服務(wù)器內(nèi)存和帶寬的負(fù)載。并且,由于服務(wù)器可以感知制式表單的各類(lèi)代碼,因此,針對(duì)不同類(lèi)代碼的部分處理可以由服務(wù)器預(yù)先進(jìn)行,進(jìn)而提高了客戶端在獲取到制式表單的代碼后的處理效率。
其中,上述制式表單的各類(lèi)代碼可以包括控件代碼、非控件代碼以及JavaScript腳本。上述存儲(chǔ)單元503可以基于通用傳輸格式存儲(chǔ)控件代碼和JavaScript腳本,例如,基于JSON或者XML存儲(chǔ)控件代碼以及JavaScript腳本代碼。與現(xiàn)有技術(shù)針對(duì)制式表單的代碼全部采用HTML格式編寫(xiě)的方式相比,JSON或者XML格式的代碼數(shù)據(jù)量更小,有利于傳輸。
可選地,該服務(wù)器50還包括修改單元504,用于對(duì)第一類(lèi)代碼進(jìn)行修改;所述第一類(lèi)代碼為所述制式表單的代碼中的任一類(lèi)代碼;所述存儲(chǔ)單元503還用于,將修改后的第一類(lèi)代碼重新進(jìn)行存儲(chǔ)。
示例地,服務(wù)器在對(duì)制式表單的控件的代碼進(jìn)行了修改后,可以將修改后的代碼重新存儲(chǔ),非控件的代碼以及JavaScript腳本的代碼保持不變。這樣,相比現(xiàn)有技術(shù)對(duì)任一部分代碼進(jìn)行修改后均需要全部重新存儲(chǔ)制式表單的代碼,本發(fā)明實(shí)施例降低了服務(wù)器的內(nèi)存以及帶寬負(fù)載。
可選地,在所述制式表單的代碼包括控件代碼的情況下,所述服務(wù)器50還包括:接收單元505,用于接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;調(diào)整單元506,用于獲取所述控件代碼,并基于控件權(quán)限信息對(duì)所述控件代碼進(jìn)行調(diào)整;發(fā)送單元507,用于發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括調(diào)整后的所述控件代碼。
示例地,制式表單的控件包括文本框、密碼框以及復(fù)選框,其中,所述文本框的權(quán)限為初始載入時(shí)隱藏。在本發(fā)明實(shí)施例中,服務(wù)器在接收到客戶端的表單請(qǐng)求消息后,根據(jù)存儲(chǔ)的控件權(quán)限信息對(duì)存儲(chǔ)的控件的代碼進(jìn)行調(diào)整,使得控件中的文本框在初始載入時(shí)隱藏。這樣,該客戶端在接收到調(diào)整后的控件代碼后,直接隱藏控件中的文本框,不對(duì)文本框進(jìn)行渲染,從而避免了現(xiàn)有技術(shù)中可能出現(xiàn)的控件“閃爍”的情形。
在本發(fā)明實(shí)施例中,該接收單元505還用于接收客戶端發(fā)送的表單請(qǐng)求消息;所述表單請(qǐng)求消息用于獲取所述制式表單的代碼;該發(fā)送單元507還用于,發(fā)送用于響應(yīng)所述表單請(qǐng)求消息的響應(yīng)消息給所述客戶端,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息。
示例地,該指示信息指示該客戶端先利用制式表單的非控件代碼繪制表單頁(yè)面;在繪制完所述表單頁(yè)面后,根據(jù)制式表單的控件代碼進(jìn)行控件渲染;在所述控件渲染完成后,運(yùn)行所述JavaScript腳本。這樣,由于代碼的執(zhí)行順序可控,避免了現(xiàn)有技術(shù)中在控件渲染和運(yùn)行JavaScript腳本之間多次切換的情形出現(xiàn),提高了客戶端瀏覽器渲染的效率。
值得說(shuō)明的是,以上對(duì)服務(wù)器50的單元?jiǎng)澐?,僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式。例如,上述分類(lèi)單元502以及調(diào)整單元506可以劃分為一個(gè)處理單元。并且,上述各功能單元的物理實(shí)現(xiàn)也可能有多種實(shí)現(xiàn)方式,例如,上述調(diào)整單元506具體可以是一中央處理器,也可以是ASIC(Application Specific Integrated Circuit,專(zhuān)用集成電路)。
另外,所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的服務(wù)器的各單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,此處不再贅述。
本發(fā)明實(shí)施例還提供一種客戶端60,用于實(shí)施上述方法實(shí)施例中對(duì)應(yīng)的方法步驟,如圖6所示,該客戶端60包括:
發(fā)送單元601,用于向服務(wù)器發(fā)送表單請(qǐng)求消息,所述表單請(qǐng)求消息用于獲取所述服務(wù)器中的制式表單的代碼;
接收單元602,用于接收所述服務(wù)器發(fā)送的響應(yīng)消息,所述響應(yīng)消息包括所述制式表單的各類(lèi)代碼以及用于指示所述各類(lèi)代碼的處理順序的指示信息;其中,所述服務(wù)器分類(lèi)存儲(chǔ)有所述制式表單的各類(lèi)代碼;
處理單元603,用于根據(jù)所述指示信息處理所述制式表單的各類(lèi)代碼。
示例地,所述制式表單的各類(lèi)代碼包括控件代碼、非控件代碼以及JavaScript腳本。所述處理單元603具體用于:根據(jù)所述指示信息利用所述非控件代碼繪制表單頁(yè)面;在繪制完所述表單頁(yè)面后,根據(jù)所述控件代碼進(jìn)行控件渲染;在所述控件渲染完成后,運(yùn)行所述JavaScript腳本。
這樣,由于代碼的執(zhí)行順序可控,避免了現(xiàn)有技術(shù)中在控件渲染和運(yùn)行JavaScript腳本之間多次切換的情形出現(xiàn),提高了客戶端瀏覽器渲染的效率。
上述只是舉例說(shuō)明,該指示信息也可以指示客戶端先運(yùn)行JavaScript腳本,再渲染控件,本發(fā)明對(duì)此不做限定。
在本發(fā)明實(shí)施例的一種可能的實(shí)現(xiàn)方式中,所述響應(yīng)消息包括服務(wù)器根據(jù)控件權(quán)限信息調(diào)整后的控件代碼;所述處理單元603還用于:根據(jù)調(diào)整后的控件代碼進(jìn)行控件渲染。這樣,對(duì)于需要隱藏的控件,客戶端可以不進(jìn)行渲染,避免了現(xiàn)有技術(shù)中對(duì)控件先渲染再隱藏導(dǎo)致的“閃爍”情形的出現(xiàn)。
值得說(shuō)明的是,以上對(duì)客戶端60的單元?jiǎng)澐?,僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式。并且,上述各功能單元的物理實(shí)現(xiàn)也可能有多種實(shí)現(xiàn)方式,例如上述處理單元603具體可以為渲染器,也可以為FPGA(Field Programmable Gate Array,現(xiàn)場(chǎng)可編程門(mén)陣列),本發(fā)明對(duì)此不做限定。
另外,所屬本領(lǐng)域的技術(shù)人員應(yīng)該清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的客戶端的各單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,此處不再贅述。
在本申請(qǐng)所提供的實(shí)施例中,應(yīng)該理解到,所公開(kāi)的裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、RAM(Random Access Memory,隨機(jī)存取存儲(chǔ)器)、磁碟或者光盤(pán)等各種可以存儲(chǔ)數(shù)據(jù)的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。