專(zhuān)利名稱(chēng):基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于頁(yè)面開(kāi)發(fā)技術(shù)領(lǐng)域,具體涉及一種基于aj ax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng)。
背景技術(shù):
現(xiàn)代B/S架構(gòu)的管理系統(tǒng)大多是基于動(dòng)態(tài)頁(yè)面,并部署在支持各自的應(yīng)用服務(wù)器,如tomcat,iis等。此類(lèi)部署架構(gòu)在面對(duì)超大并發(fā)訪問(wèn)時(shí),服務(wù)器端對(duì)于頁(yè)面的性能消耗和響應(yīng)速度會(huì)是一個(gè)需要考慮的問(wèn)題。具體來(lái)說(shuō),包括1、動(dòng)態(tài)頁(yè)面本身的處理要比靜態(tài)頁(yè)面復(fù)雜,對(duì)服務(wù)器消耗高,響應(yīng)時(shí)間長(zhǎng)。2、系統(tǒng)中也有很多圖片,腳本,html頁(yè)面等靜態(tài)資源,但一般應(yīng)用服務(wù)器的處理效率都遠(yuǎn)低于純http服務(wù)器(如apache)。這樣最終使得系統(tǒng)處理性能下降,用戶(hù)在界面上要等待的時(shí)間變長(zhǎng),長(zhǎng)時(shí)間“白屏”。對(duì)于系統(tǒng)處理性能,目前的解決方案有將純http服務(wù)器和應(yīng)用服務(wù)器結(jié)合部署,由純http服務(wù)器處理靜態(tài)內(nèi)容,如js,html等;應(yīng)用服務(wù)器處理服務(wù)器端腳本,如jsp,php等。雖然系統(tǒng)整體提高了靜態(tài)頁(yè)面的處理能力,解決了對(duì)于靜態(tài)內(nèi)容處理的問(wèn)題,但還是要等待應(yīng)用服務(wù)器處理完畢才返回整個(gè)頁(yè)面的內(nèi)容。另外還有將動(dòng)態(tài)頁(yè)面靜態(tài)化,即將動(dòng)態(tài)頁(yè)面的返回結(jié)果直接保存為靜態(tài)html頁(yè)面。舉例來(lái)說(shuō),以jsp為例,某系統(tǒng)里有一個(gè)產(chǎn)品信息的表單訪問(wèn)路徑是這樣的ProductInfo. jsp pid=123,客戶(hù)端在訪問(wèn)這個(gè)頁(yè)面時(shí)會(huì)在服務(wù)器端產(chǎn)生以下的消耗1、初次訪問(wèn)jsp頁(yè)面編譯的時(shí)間;2、根據(jù)pid=123進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),得到相應(yīng)數(shù)據(jù)的時(shí)間;3、將結(jié)果通過(guò)servlet的out對(duì)象輸出的時(shí)間。其中,第二、第三個(gè)消耗時(shí)間在每次訪問(wèn)時(shí)都需要執(zhí)行。因此采取頁(yè)面靜態(tài)化處理,會(huì)將上面步驟3的返回結(jié)果在服務(wù)器端之間保存為例如ProductInfo_123. html這樣的頁(yè)面。后面再有用戶(hù)請(qǐng)求就直接指向這個(gè)html頁(yè)面。這樣就省略了上述步驟I和2,可以大大提高頁(yè)面響應(yīng)速度。這種方案在各類(lèi)內(nèi)容管理平臺(tái)中很常用,因?yàn)橐话愦祟?lèi)系統(tǒng)的數(shù)據(jù)更新頻率不高,適合進(jìn)行靜態(tài)化處理。但是如果數(shù)據(jù)變動(dòng)頻繁,如各類(lèi)信息管理系統(tǒng),用戶(hù)每時(shí)每刻都會(huì)通過(guò)表單與數(shù)據(jù)庫(kù)進(jìn)行交互,靜態(tài)化處理本身就會(huì)帶來(lái)很多系統(tǒng)消耗,這種方案就不再適合了。本發(fā)明因此而來(lái)。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng),解決了現(xiàn)有技術(shù)中動(dòng)態(tài)頁(yè)面開(kāi)發(fā)時(shí)系統(tǒng)消耗太大、用戶(hù)在界面上要等待的時(shí)間過(guò)長(zhǎng)、系統(tǒng)性能低下等問(wèn)題。為了解決現(xiàn)有技術(shù)中的這些問(wèn)題,本發(fā)明提供的技術(shù)方案是一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng),包括客戶(hù)端、http服務(wù)器、應(yīng)用服務(wù)器,所述客戶(hù)端瀏覽器通過(guò)路由服務(wù)器分別與http服務(wù)器、應(yīng)用服務(wù)器通信,其特征在于所述http服務(wù)器負(fù)責(zé)接收靜態(tài)頁(yè)面請(qǐng)求,并將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給客戶(hù)端瀏覽器,并在瀏覽器上展現(xiàn)頁(yè)面主體;所述應(yīng)用服務(wù)器負(fù)責(zé)接收非靜態(tài)頁(yè)面請(qǐng)求,
3客戶(hù)端瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器向?yàn)g覽器返回動(dòng)態(tài)數(shù)據(jù),瀏覽器更新數(shù)據(jù)并更新頁(yè)面顯示。本發(fā)明的另一目的在于提供一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理方法,其特征在于所述方法包括以下步驟(I)瀏覽器向http服務(wù)器請(qǐng)求動(dòng)態(tài)頁(yè)面中的頁(yè)面主體;(2) http服務(wù)器將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給瀏覽器,瀏覽器展現(xiàn)頁(yè)面主體;(3)瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器的服務(wù)器端腳本;(4)應(yīng)用服務(wù)器將返回的數(shù)據(jù)返回給瀏覽器,瀏覽器再次更新頁(yè)面。本發(fā)明技術(shù)方案中提出了全新的系統(tǒng)部署方法,結(jié)合特定的頁(yè)面框架,有效的利用應(yīng)用服務(wù)器和純http服務(wù)器各自的優(yōu)點(diǎn),提高系統(tǒng)的整體響應(yīng)能力和用戶(hù)體驗(yàn)。采用靜態(tài)頁(yè)面框架,拋棄服務(wù)器端腳本,如jsp,php,全部改用html頁(yè)面和ajax的處理方法。此法可以使得系統(tǒng)不需要等待邏輯的全部處理完畢,而在第一時(shí)間響應(yīng)用戶(hù)的頁(yè)面請(qǐng)求,加載出系統(tǒng)頁(yè)面。上述方法配合http服務(wù)器與應(yīng)用服務(wù)器一起部署的整體部署結(jié)構(gòu)。此法充分發(fā)揮了 http服務(wù)器處理靜態(tài)資源的優(yōu)勢(shì),提升了系統(tǒng)的整體性能,同時(shí)也方便后續(xù)集群的擴(kuò)展。相對(duì)于現(xiàn)有技術(shù)中的方案,本發(fā)明的優(yōu)點(diǎn)是本發(fā)明技術(shù)方案結(jié)合了現(xiàn)有技術(shù)各自的優(yōu)點(diǎn),并對(duì)缺陷進(jìn)行了回避,與頁(yè)面靜態(tài)化相比,不去將原來(lái)的內(nèi)容直接生成靜態(tài)頁(yè)面,而是將靜態(tài)內(nèi)容先加載,再讀取數(shù)據(jù),提升性能的同時(shí),更能適應(yīng)數(shù)據(jù)變動(dòng)頻繁的信息系統(tǒng)的要求。與直接用http服務(wù)器與應(yīng)用服務(wù)器混合部署的方式相比,利用快速返回的靜態(tài)頁(yè)面,給用戶(hù)第一時(shí)間的響應(yīng),避免了原來(lái)需要等待所有服務(wù)器請(qǐng)求響應(yīng)完畢的過(guò)程。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述圖I為基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng)的靜態(tài)頁(yè)面框架訪問(wèn)過(guò)程圖;圖2為基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng)的網(wǎng)絡(luò)部署結(jié)構(gòu)圖;圖3為基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng)的系統(tǒng)訪問(wèn)流程圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說(shuō)明。應(yīng)理解,這些實(shí)施例是用于說(shuō)明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠家的條件做進(jìn)一步調(diào)整,未注明的實(shí)施條件通常為常規(guī)實(shí)驗(yàn)中的條件。實(shí)施例本實(shí)施例得到的基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng),包括客戶(hù)端、http服務(wù)器、應(yīng)用服務(wù)器,所述客戶(hù)端瀏覽器通過(guò)路由服務(wù)器分別與http服務(wù)器、應(yīng)用服務(wù)器通信,所述http服務(wù)器負(fù)責(zé)接收靜態(tài)頁(yè)面請(qǐng)求,并將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給客戶(hù)端瀏覽器,并在瀏覽器上展現(xiàn)頁(yè)面主體;所述應(yīng)用服務(wù)器負(fù)責(zé)接收非靜態(tài)頁(yè)面請(qǐng)求,客戶(hù)端瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器向?yàn)g覽器返回動(dòng)態(tài)
4數(shù)據(jù),瀏覽器更新數(shù)據(jù)并更新頁(yè)面顯示。本實(shí)施例的系統(tǒng)主要包括2個(gè)部分一、靜態(tài)頁(yè)面框架。本實(shí)施例舍棄jsp等服務(wù)器端腳本,換成html頁(yè)面,通過(guò)ajax請(qǐng)求與服務(wù)器端交互,并通過(guò)JSON格式進(jìn)行參數(shù)的傳遞。ajax是“Asynchronous JavaScript And XML “(異步JavaScript和XML),可以以非阻塞的方式請(qǐng)求服務(wù)器端資源。JSON(JavaScript ObjectNotation)是一種輕量級(jí)的數(shù)據(jù)交換格式,易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成用戶(hù)所有請(qǐng)求的都是html頁(yè)面,這樣可以第一時(shí)間加載出主體頁(yè)面內(nèi)容,再通過(guò)aj ax技術(shù)進(jìn)行服務(wù)器端功能的請(qǐng)求,最后利用回調(diào)函數(shù)獲取返回?cái)?shù)據(jù)進(jìn)行頁(yè)面內(nèi)容的更新??蚣鼙旧戆ㄒ訨avascript引擎和服務(wù)器端處理接口 I. Javascript 引擎a) url參數(shù)處理器獲取url參數(shù),并封裝成JSON格式,方便后續(xù)數(shù)據(jù)處理。b) ajax請(qǐng)求對(duì)象可以發(fā)送ajax請(qǐng)求,擁有回調(diào)函數(shù)接口和異常處理接口一個(gè)典型的用jquery實(shí)現(xiàn)的引擎示例可以這樣的
S(d oc U ment).reacly( fun ction(){
//獲取uri參數(shù),轉(zhuǎn)換成JSOX格式
var pa rams = getL· RLPa rams(window,loction. href);
$.ajax{
type : 'post*,
url : "productlnfo.action",
dataType : 'json',data : params,success : doSomeThingf)2.服務(wù)器端處理接口 a)請(qǐng)求攔截器能夠攔截到ajax請(qǐng)求,并處理好參數(shù)。b)訪問(wèn)權(quán)限的控制器。c)業(yè)務(wù)邏輯調(diào)用器d)處理結(jié)果封裝器將業(yè)務(wù)邏輯的處理結(jié)果進(jìn)行數(shù)據(jù)封裝再返回到客戶(hù)端e)相關(guān)的異常處理接口—個(gè)典型的用java的servlet實(shí)現(xiàn)的處理接口可以是這樣的public void doPost(HttpServ!etRequest request, HttpServIetResponse
response)
throws Ser V let Except ion, IOException {
//獲取ajax提交的參數(shù)Object Params = getParanis();
//調(diào)用業(yè)務(wù)邏輯方法
Object result = doSonieThing(Params);
//返回結(jié)果
PrintWriter out = response.getWriter();
out.write(result);
out.dose();
I舉例說(shuō)明,當(dāng)訪問(wèn)地址為ProductInfo. html pid=123的頁(yè)面時(shí),如圖I所示步驟一解析url 參數(shù),形成 params= {pid: 123}步驟二 發(fā)送ajax請(qǐng)求步驟三服務(wù)器響應(yīng)ajax請(qǐng)求,調(diào)用業(yè)務(wù)邏輯,獲取到Product的具體信息并返回。步驟四通過(guò)ajax的回調(diào)函數(shù),獲取到數(shù)據(jù),將Product的信息展現(xiàn)到頁(yè)面上或進(jìn)行異常處理。二、系統(tǒng)整體部署方式以tomcat和apache為例,系統(tǒng)部署時(shí)將全部的靜態(tài)文件放到http服務(wù)器(如apache)里面,將所有的非靜態(tài)資源,如servlet, javabean等部署的應(yīng)用服務(wù)器(如tomcat)里面。配置http服務(wù)器的轉(zhuǎn)發(fā)規(guī)則,根據(jù)url匹配,將靜態(tài)資源的請(qǐng)求轉(zhuǎn)發(fā)給http服務(wù)器,非靜態(tài)資源轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器,兩者各自將處理結(jié)果返回給瀏覽器。將框架和部署結(jié)構(gòu)結(jié)合起來(lái),即為系統(tǒng)的整個(gè)訪問(wèn)結(jié)構(gòu)對(duì)于大并發(fā)下的B/S架構(gòu)管理系統(tǒng),從系統(tǒng)性能提升和用戶(hù)訪問(wèn)感受的角度上來(lái)講,此法比其他已知方案效果都好,通用性都強(qiáng)。服務(wù)器端可以是jsp, asp, php等各種語(yǔ)音;客戶(hù)端只要能支持javascript和ajax,例如pc,智能手機(jī),平板電腦等。上述實(shí)例只為說(shuō)明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng),包括客戶(hù)端、http服務(wù)器、應(yīng)用服務(wù)器,所述客戶(hù)端瀏覽器通過(guò)路由服務(wù)器分別與http服務(wù)器、應(yīng)用服務(wù)器通信,其特征在于所述http服務(wù)器負(fù)責(zé)接收靜態(tài)頁(yè)面請(qǐng)求,并將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給客戶(hù)端瀏覽器,并在瀏覽器上展現(xiàn)頁(yè)面主體;所述應(yīng)用服務(wù)器負(fù)責(zé)接收非靜態(tài)頁(yè)面請(qǐng)求,客戶(hù)端瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器向?yàn)g覽器返回動(dòng)態(tài)數(shù)據(jù),瀏覽器更新數(shù)據(jù)并更新頁(yè)面顯示。
2.一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理方法,其特征在于所述方法包括以下步驟(1)瀏覽器向http服務(wù)器請(qǐng)求動(dòng)態(tài)頁(yè)面中的頁(yè)面主體;(2)http服務(wù)器將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給瀏覽器,瀏覽器展現(xiàn)頁(yè)面主體;(3)瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器的服務(wù)器端腳本;(4)應(yīng)用服務(wù)器將返回的數(shù)據(jù)返回給瀏覽器,瀏覽器再次更新頁(yè)面。
全文摘要
本發(fā)明公開(kāi)了一種基于ajax技術(shù)的動(dòng)態(tài)頁(yè)面處理系統(tǒng),包括客戶(hù)端、http服務(wù)器、應(yīng)用服務(wù)器,所述客戶(hù)端瀏覽器通過(guò)路由服務(wù)器分別與http服務(wù)器、應(yīng)用服務(wù)器通信,其特征在于所述http服務(wù)器負(fù)責(zé)接收靜態(tài)頁(yè)面請(qǐng)求,并將靜態(tài)頁(yè)面連同頁(yè)面的上應(yīng)用的靜態(tài)資源一起返回給客戶(hù)端瀏覽器,并在瀏覽器上展現(xiàn)頁(yè)面主體;所述應(yīng)用服務(wù)器負(fù)責(zé)接收非靜態(tài)頁(yè)面請(qǐng)求,客戶(hù)端瀏覽器的頁(yè)面通過(guò)ajax請(qǐng)求訪問(wèn)應(yīng)用服務(wù)器,應(yīng)用服務(wù)器向?yàn)g覽器返回動(dòng)態(tài)數(shù)據(jù),瀏覽器更新數(shù)據(jù)并更新頁(yè)面顯示。該方法充分發(fā)揮了http服務(wù)器處理靜態(tài)資源的優(yōu)勢(shì),提升了系統(tǒng)的整體性能,同時(shí)也方便后續(xù)集群的擴(kuò)展。
文檔編號(hào)G06F17/30GK102938776SQ20121037168
公開(kāi)日2013年2月20日 申請(qǐng)日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者錢(qián)駿, 夏幫國(guó), 王長(zhǎng)堯 申請(qǐng)人:方正國(guó)際軟件有限公司