亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法及裝置的制作方法

文檔序號(hào):6561963閱讀:216來(lái)源:國(guó)知局
專利名稱:用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息處理技術(shù),更具體地說(shuō),涉及生成動(dòng)態(tài)網(wǎng)頁(yè)的技術(shù)。
技術(shù)背景在任何基于瀏覽器的架構(gòu)中,不管后臺(tái)服務(wù)器端采用什么樣的展現(xiàn)技術(shù)和架構(gòu)設(shè)計(jì),其最終返回給瀏覽器的必須是瀏覽器能識(shí)別的標(biāo)記: 吾言, 包括超文本標(biāo)記語(yǔ)言HTML (Hyper Text Markup Language),可擴(kuò)展 標(biāo)記語(yǔ)言XML (extensible Markup Language),無(wú)線標(biāo)記語(yǔ)言WML (Wireless Markup Language)等。在動(dòng)態(tài)網(wǎng)頁(yè)的制作過(guò)程中,通常首先由網(wǎng)頁(yè)設(shè)計(jì)人員(例如美工人員) 利用進(jìn)行模板設(shè)計(jì);然后,由開(kāi)發(fā)人員對(duì)才莫板進(jìn)行填充,以實(shí)現(xiàn)各種動(dòng)態(tài) 功能(比如動(dòng)態(tài)數(shù)據(jù)展現(xiàn))。設(shè)計(jì)模板例如HTML設(shè)計(jì)模板;通常網(wǎng)頁(yè)設(shè) 計(jì)人員(例如美工人員)只具備網(wǎng)頁(yè)設(shè)計(jì)相關(guān)的技能(比如懂得HTML語(yǔ) 言),而不知曉任何非網(wǎng)頁(yè)設(shè)計(jì)相關(guān)的技能(比如java);而知曉非網(wǎng)頁(yè)設(shè) 計(jì)相關(guān)的技能的開(kāi)發(fā)人員在動(dòng)態(tài)網(wǎng)頁(yè)的開(kāi)發(fā)過(guò)程中,負(fù)責(zé)后臺(tái)程序編碼, 動(dòng)態(tài)數(shù)據(jù)的生成而不負(fù)責(zé)網(wǎng)頁(yè)風(fēng)格的控制,開(kāi)發(fā)人員可以利用例如Perl、 Tcl、 Java、 Python、 ASP以及許多其它語(yǔ)言和工具,對(duì)才莫板進(jìn)行填充以實(shí) 現(xiàn)動(dòng)態(tài)數(shù)據(jù)的生成。對(duì)于網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)展現(xiàn),存在許多流行的方法,例如Servlet+JSP 方法(JavaServer Page)(或者配合標(biāo)記庫(kù)Taglibs) 、 Velocity方法、可 擴(kuò)展標(biāo)i己語(yǔ)言編譯器XMLC ( extensible Markup Language Complier)方 法等。但是目前存在的方法,都必然要求網(wǎng)頁(yè)設(shè)計(jì)人員和開(kāi)發(fā)人員對(duì)同一 個(gè)模板文件進(jìn)行協(xié)同開(kāi)發(fā),比如由網(wǎng)頁(yè)設(shè)計(jì)人員先完成模板文件(基于標(biāo)
準(zhǔn)瀏覽器能識(shí)別的標(biāo)記語(yǔ)言,比如HTML或者WML等等);然后由開(kāi) 發(fā)人員修改這個(gè)文件,填入只有開(kāi)發(fā)人員能明白的程序代碼,這樣就必然 破壞了原M板文件的標(biāo)準(zhǔn)性,使得被修改后的模板不能被標(biāo)準(zhǔn)瀏覽器所 識(shí)別,這對(duì)網(wǎng)頁(yè)設(shè)計(jì)人員的后繼維護(hù)帶來(lái)了巨大的挑戰(zhàn),由于該模板里面 加入了大量的網(wǎng)頁(yè)設(shè)計(jì)人員不可識(shí)別的程序語(yǔ)言,造成網(wǎng)頁(yè)設(shè)計(jì)人員不能 再用原來(lái)的網(wǎng)頁(yè)編輯器進(jìn)行維護(hù)。下面將以現(xiàn)有的部分典型技術(shù)為例,侮: 進(jìn)一步的說(shuō)明。Servlet是在網(wǎng)頁(yè)服務(wù)器或應(yīng)用服務(wù)器上運(yùn)行的一種Java應(yīng)用程序, 用來(lái)提供服務(wù)器端處理,例如訪問(wèn)數(shù)據(jù)庫(kù)等。Servlet將展現(xiàn)標(biāo)記內(nèi)容和業(yè) 務(wù)邏輯處理緊密結(jié)合在一起。下面為Servlet的實(shí)例的一個(gè)片段response.setBufferSize (8*1024); response.setContentSize ("text/html"); Print Writer out = response.get Writer (); out.println ("<HTML>,,);out.println ("<HEAD> <TITLE> Serlet Output</TITLE> </HEAD>,,); out.println ("<BODY>");out.println ("
Welcome To this World </P>,,); out.println ("</BODY>"); println ("</HTML>,,);通常使用servlet技術(shù)的開(kāi)發(fā)流程是這樣的由網(wǎng)頁(yè)設(shè)計(jì)人員編寫標(biāo)準(zhǔn) 的模板文件(如HTML文件),然后由開(kāi)發(fā)人員將全部的模板寫入servlet 代碼,在這些代碼中間嵌入標(biāo)準(zhǔn)的java邏輯代碼以顯示動(dòng)態(tài)數(shù)據(jù)。然而, Servlet技術(shù)的缺點(diǎn)是明顯的,它很難將展現(xiàn)標(biāo)記內(nèi)容和業(yè)務(wù)邏輯處理分 開(kāi),使用該技術(shù)對(duì)于進(jìn)一步的維護(hù)是致命的,因?yàn)槿魏物@示相關(guān)的數(shù)據(jù)修 改(比如修改一個(gè)字體的顏色或者布局),是直接修改java代碼,所以需 要對(duì)整個(gè)servlet代碼進(jìn)行重新編譯和部署。JSP是對(duì)Servlet技術(shù)的擴(kuò)展,其允許在同 一頁(yè)中結(jié)合HTML和Java, 例如將Java插入標(biāo)記頁(yè)用于產(chǎn)生動(dòng)態(tài)內(nèi)容,其中Java提供業(yè)務(wù)邏輯處理, HTML提供在網(wǎng)頁(yè)瀏覽器中展現(xiàn)的頁(yè)面。JSP文件訪問(wèn)Bean或其它能將生成的動(dòng)態(tài)內(nèi)容發(fā)送到瀏覽器的組件。 當(dāng)網(wǎng)頁(yè)服務(wù)器接收到一個(gè)JSP文件請(qǐng)求時(shí),服務(wù)器將請(qǐng)求發(fā)送至應(yīng)用服務(wù) 器(例如IBM WebSphere)。應(yīng)用服務(wù)器對(duì)JSP文件進(jìn)行語(yǔ)法分析并生 成Java源文件(被編譯和執(zhí)行為Servlet) 。 Java源文件的生成和編譯僅 在初次調(diào)用Servlet時(shí)發(fā)生,除非已經(jīng)更新了原始的JSP文件。在這種情 況下,應(yīng)用服務(wù)器將檢測(cè)所做的更新,并在執(zhí)行它之前重新生成和編譯 Servlet。下面為JSP的實(shí)例的一個(gè)片段<% @ page import = "java.util.Date, java.text.DateFormat" %><HTMD> <BODY>
Welcome to JSP development where the time is: <% = DateFormat.getTimelnstance () .format((new Data())) 0/o> </BODY> </HTML>盡管JSP不需要在編程時(shí)編寫展現(xiàn)標(biāo)記,但是對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員和開(kāi) 發(fā)人員,他們必須能夠處理/理解嵌入頁(yè)中的Java程序和業(yè)務(wù)邏輯,而這 對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員來(lái)說(shuō)是很困難的,因?yàn)榫W(wǎng)頁(yè)設(shè)計(jì)人員只能認(rèn)識(shí)標(biāo)準(zhǔn)的 HTML,而不能認(rèn)識(shí)嵌入在HTML中間的任何Java程序。如果此時(shí)要求 網(wǎng)頁(yè)設(shè)計(jì)人員進(jìn)行后期的頁(yè)面風(fēng)格修改,將導(dǎo)致巨大的困難。 一方面是此 時(shí)的模板文件中加入了大量的非HTML標(biāo)準(zhǔn)標(biāo)示的代碼,另一方面頁(yè)面編 輯工具此時(shí)將不可用。Velocity是基于Java的模板引擎,它允許任何人使用簡(jiǎn)單而強(qiáng)大的模 板語(yǔ)言來(lái)引用定義在Java代碼中的對(duì)象。網(wǎng)頁(yè)設(shè)計(jì)人員可以與Java程序 員根據(jù)模型/視圖/控制器(Model/View/Controller, MVC )架構(gòu)并4亍開(kāi)發(fā) 網(wǎng)頁(yè),也就是說(shuō),網(wǎng)頁(yè)設(shè)計(jì)人員只集中于設(shè)計(jì)網(wǎng)頁(yè),而程序員只集中于編
寫代碼。下面為Velocity的實(shí)例的一個(gè)片段<HTMI> <BODY>Hello $customer.Name!<TABLE>#foreach($mud in $mudsOnSpecial) #if($customer.hasPurchased($mud))<TR〉 <TD>$flogger.getPromo($mud)</TD> </TR〉 #end #end</TABLE></BODY></HTML>然而,實(shí)際上,Velocity模板語(yǔ)言非常類似于JSP中的Java程序,一 方面對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員,在模板文件中嵌入了很多他們不能理解的業(yè)務(wù)邏 輯或其它語(yǔ)言。此外,Velocity模板中要求使用它自定義的VTL (Velocity Template Language, Velocity模板語(yǔ)言),VTL和JSP中的Java代碼本 質(zhì)上并沒(méi)有什么區(qū)別。另一方面加入VTL之后,這個(gè)模板已經(jīng)不是純 HTML 了,其同樣也要求頁(yè)面開(kāi)發(fā)人員具有一定的前端編程技能。加入 VTL之后的才莫板,已經(jīng)不能被標(biāo)準(zhǔn)HTML編輯器所識(shí)別。此外,Velocity 的合并引擎(Merge Engine)是以模板為中心,即先讀入模板,然后編譯 模板文件,同時(shí)解釋模板中嵌入的VTL,由VTL去訪問(wèn)數(shù)據(jù)上下文(Data Context),從而進(jìn)行動(dòng)態(tài)數(shù)據(jù)替換。Velocity的上下文只是一個(gè)數(shù)據(jù)存儲(chǔ)
中心,只具有數(shù)據(jù),而不具有任何展現(xiàn)相關(guān)的信息(由模板中的VTL去解 釋該數(shù)據(jù)如何展現(xiàn))。比如頁(yè)面要顯示10條記錄,而業(yè)務(wù)邏輯返回的數(shù)據(jù) 有20條,Velocity的上下文會(huì);^V這20條數(shù)據(jù),然后由模板中的VTL去 循環(huán)顯示1-10條,即由模板來(lái)控制顯示。這些都對(duì)開(kāi)發(fā)人員提出了更高的 要求。XMLC方法是對(duì)標(biāo)記語(yǔ)言頁(yè)面,如HTML, XML, WML等進(jìn)行編 譯以生成一個(gè)相應(yīng)的Java類。這個(gè)Java類包含了頁(yè)面的完整的文檔對(duì)象 模型DOM ( Document Object Model)樹(shù)結(jié)構(gòu)及其操作方法,因而可以處 理頁(yè)面上的任何內(nèi)容及其屬性。更重要的是,在XMLC中,巧妙地把動(dòng)態(tài) 內(nèi)容和HTML中的標(biāo)識(shí)id (identifier )屬性聯(lián)系起來(lái)并在Java類中生成 相應(yīng)的操作方法,比如改變文本內(nèi)容的屬性等。不同于JSP, XMLC沒(méi)有 引進(jìn)任何額外的HTML/XML標(biāo)記屬性,只是重用了 id屬性。因而,XMLC 實(shí)際上可以處理4壬4可的標(biāo)記語(yǔ)言,不僅僅限于XML, HTML, WML等。XMLC通過(guò)3個(gè)步驟處理標(biāo)記語(yǔ)言頁(yè)面,其工作過(guò)程為1. 校驗(yàn)輸入文檔(HTML, XML, WML等)是否有效,標(biāo)記是否 合法完整。2. 產(chǎn)生一個(gè)DOM樹(shù),即Java類代表輸入文檔(頁(yè)面)。在實(shí)際應(yīng) 用中,創(chuàng)建一個(gè)這個(gè)類的實(shí)例,使用這個(gè)類的實(shí)例就可以操縱頁(yè)面的DOM 樹(shù)。3. 產(chǎn)生處理動(dòng)態(tài)內(nèi)容的Java方法。動(dòng)態(tài)內(nèi)容只需要用id標(biāo)記出來(lái)即 可??梢钥闯?,這種方法極大的簡(jiǎn)化Java開(kāi)發(fā)人員處理頁(yè)面動(dòng)態(tài)內(nèi)容的工 作量。雖然,XMLC使用標(biāo)準(zhǔn)的HTML做為模板,并且使用HTML的id 屬性做為關(guān)鍵字定位。但是,XMLC要求在開(kāi)發(fā)階段就用它的編譯工具進(jìn) 行預(yù)編譯,把模板文件編譯成一堆的Java類。每個(gè)Java類封裝了才莫板中 對(duì)應(yīng)結(jié)點(diǎn)的屬性和操作方法,然后由程序員在業(yè)務(wù)邏輯中導(dǎo)入這些類,并 且通過(guò)應(yīng)用編禾呈接口 API (Application programming interface)的方式對(duì) 這些結(jié)點(diǎn)進(jìn)行賦值,最終運(yùn)行Java程序輸出HTML內(nèi)容,XMLC并沒(méi)有
合并引擎的概念,同時(shí)模板文件只是在開(kāi)發(fā)期間有效,運(yùn)行期間只是使用編譯出來(lái)的Java類。與Servlet、 JSP和Velocity相比,XMLC對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員來(lái)說(shuō)非常 簡(jiǎn)單,它基于純HTML模板,但是對(duì)于業(yè)務(wù)開(kāi)發(fā)人員來(lái)說(shuō)非常復(fù)雜,因?yàn)?只要網(wǎng)頁(yè)(或模板)有所改變,開(kāi)發(fā)人員必須重新將HTML模板編譯成 DOM樹(shù),并修復(fù)編譯錯(cuò)誤(例如〈TR、.〈TR〉應(yīng)該是〈TR、.々TR〉)。因此,需要一種基于可以被瀏覽器瀏覽(解釋)的模板生成動(dòng)態(tài)網(wǎng)頁(yè) 的技術(shù),使其對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員和開(kāi)發(fā)人員都非常簡(jiǎn)單,并且使他們之間 的聯(lián)系變得簡(jiǎn)單,從而使任何一方可以容易地閱讀并理解另一方進(jìn)行的修 改。發(fā)明內(nèi)容為了解決上述現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明提供了用于生成動(dòng)態(tài)網(wǎng) 頁(yè)的方法以及用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置。根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,包括 以下步驟根據(jù)響應(yīng)瀏覽器的請(qǐng)求獲得的業(yè)務(wù)邏輯的結(jié)果,生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于上述動(dòng)態(tài)網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)項(xiàng);加栽與上述請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息;以及將上述數(shù)據(jù)上下文中的至少 一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述模板中得到動(dòng)態(tài)網(wǎng)頁(yè)。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,包括以下步驟業(yè)務(wù)邏輯處理單元,根據(jù)響應(yīng)瀏覽器的請(qǐng)求獲得的業(yè)務(wù)邏輯 處理的結(jié)果,生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于 上述動(dòng)態(tài)網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)項(xiàng);模板加栽單元,用于加載與上述請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息;以及合并單元,將上述數(shù)據(jù)上下文中的至 少 一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述模板中得到動(dòng)態(tài)網(wǎng)頁(yè)。


相信通過(guò)以下結(jié)合附圖對(duì)本發(fā)明具體實(shí)施方式
的說(shuō)明,能夠使人們更 好地了解本發(fā)明的上述和其它特點(diǎn)、優(yōu)點(diǎn)和目的。圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法的流程圖;圖2是根據(jù)本發(fā)明的實(shí)施例的數(shù)據(jù)上下文與純HTML模板之間對(duì)應(yīng)關(guān) 系的示意圖;以及圖3是才艮據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置的方框圖。
具體實(shí)施方式
下面就結(jié)合附圖對(duì)本發(fā)明的各個(gè)實(shí)施例進(jìn)行詳細(xì)的說(shuō)明。 用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法圖1是才艮據(jù)本發(fā)明的一個(gè)實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法的流程圖。在圖1中,首先,在步驟101,根據(jù)來(lái)自瀏覽器的請(qǐng)求獲得業(yè)務(wù)邏輯 處理的結(jié)果,將該業(yè)務(wù)邏輯處理結(jié)果生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上 下文包括用于動(dòng)態(tài)網(wǎng)頁(yè)的 一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)。具體地,來(lái)自瀏覽器的請(qǐng)求包括本領(lǐng)域的技術(shù)人員公知的任何Web 請(qǐng)求,例如用戶在網(wǎng)上銀行上查詢余額的請(qǐng)求、用戶登陸某個(gè)帳戶時(shí)進(jìn)行 身份認(rèn)證的請(qǐng)求、基于某個(gè)關(guān)鍵字進(jìn)行搜索的請(qǐng)求等等,本發(fā)明對(duì)此沒(méi)有 任何限制。并且,本發(fā)明只關(guān)注業(yè)務(wù)邏輯處理結(jié)果如何向?yàn)g覽器展現(xiàn),而 根據(jù)來(lái)自瀏覽器的請(qǐng)求如何獲得業(yè)務(wù)邏輯處理的結(jié)果可以采用現(xiàn)有4支術(shù)中 的任何方法。在步驟101中的術(shù)語(yǔ)"業(yè)務(wù)邏輯,,更多的是一種語(yǔ)義上的術(shù)語(yǔ),而非 技術(shù)上。只要是跟業(yè)務(wù)處理有關(guān)的任何代碼都可以叫做業(yè)務(wù)邏輯。對(duì)于任 何系統(tǒng),其目的都在于接受用戶的輸入?yún)?shù)==> 根據(jù)輸入?yún)?shù)進(jìn)行業(yè) 務(wù)(交易)==> 返回顯示結(jié)果。不管什么系統(tǒng),都基于這個(gè)基本的流程。
這里根據(jù)輸入^t進(jìn)行的業(yè)務(wù)(交易),就是所謂的"業(yè)務(wù)邏輯"。下面通過(guò)兩個(gè)實(shí)例詳細(xì)地描述在步驟101中進(jìn)行的業(yè)務(wù)邏輯處理。 實(shí)例l:關(guān)于查詢余額的請(qǐng)求首先,用戶通過(guò)用戶界面(UI)(或者是根員系統(tǒng)的基于胖客戶端的 系統(tǒng);或者是普通銀行客戶使用網(wǎng)上銀行的瀏覽器頁(yè)面),輸入自己的帳 號(hào),然后按提交按鈕。接著,將這個(gè)查詢余額的請(qǐng)求發(fā)送到后臺(tái)服務(wù)器上,由后臺(tái)某個(gè)應(yīng)用 接受這個(gè)請(qǐng)求。接著,應(yīng)用會(huì)從請(qǐng)求中提取參數(shù)(這里是指用戶輸入的帳號(hào)),然 后交給一個(gè)或者多個(gè)子程序去處理,以獲得該帳號(hào)對(duì)應(yīng)的余額。這里的"一 個(gè)或者多個(gè)子程序,,就是所謂的業(yè)務(wù)邏輯。業(yè)務(wù)邏輯的實(shí)現(xiàn)方式有多種, 完全依靠用戶自己的設(shè)計(jì)和代碼實(shí)現(xiàn)。例如,這里可以是一個(gè)普通的類, 去直接查詢數(shù)據(jù)庫(kù),然后得到一個(gè)余額信息?;蛘撸ㄟ^(guò)EJB ( Ente卬rise JavaBeans,企業(yè)JavaBeans )交給一個(gè)遠(yuǎn)程的應(yīng)用進(jìn)行處理,此時(shí)這個(gè)帳 號(hào)參數(shù)就相當(dāng)于遠(yuǎn)程應(yīng)用的一個(gè)輸入,然后由那個(gè)遠(yuǎn)程應(yīng)用去處理參數(shù), 以獲得余額信息。或者,基于SO A ( Service-Oriented Architecture,面向 服務(wù)構(gòu)架)架構(gòu),這個(gè)帳號(hào)參數(shù)可能會(huì)交給一個(gè)企業(yè)服務(wù)總線(ESB)的 纟且件,然后進(jìn)入一個(gè)流禾呈,通過(guò)JCA (Java Connector Architecture, Java 連接器架構(gòu))的連接器去訪問(wèn)主機(jī)。不管怎么設(shè)計(jì)這個(gè)過(guò)程(簡(jiǎn)單的或者 復(fù)雜的),其目的都是根據(jù)輸入的帳號(hào)信息得到用戶的余額。而這個(gè)過(guò)程, 都可以叫做業(yè)務(wù)邏輯。最后,通過(guò)業(yè)務(wù)邏輯處理之后,獲得一個(gè)帳戶余額,該帳戶余額即是 業(yè)務(wù)邏輯處理結(jié)果,需要把這個(gè)帳戶余額返回給用戶界面,也就是請(qǐng)求響 應(yīng)的動(dòng)態(tài)網(wǎng)頁(yè)。因此該處理結(jié)果中包括用于生成該請(qǐng)求響應(yīng)動(dòng)態(tài)網(wǎng)頁(yè)的一 個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng),在步驟101中要將該業(yè)務(wù)邏輯處理結(jié)果生成結(jié)構(gòu)化 的數(shù)據(jù)上下文。實(shí)例2:身?xiàng)?人證的請(qǐng)求首先,用戶輸入用戶名和密碼,然后提交請(qǐng)求。
接著,將請(qǐng)求發(fā)到后端服務(wù)器,相應(yīng)的應(yīng)用程序開(kāi)始啟動(dòng),從請(qǐng)求中 獲得用戶名和密碼。接著,將獲得的用戶名和密碼發(fā)送給相應(yīng)的業(yè)務(wù)邏輯去認(rèn)證該用戶名和密碼是否正確。這個(gè)業(yè)務(wù)邏輯可以是直接訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行用戶名/密碼 對(duì)比;交給遠(yuǎn)程應(yīng)用服務(wù),該遠(yuǎn)程應(yīng)用服務(wù)可以是EJB,也可以是SOA, 或者輕量級(jí)目錄訪問(wèn)協(xié)i義LDAP( Lightweight Directory Access Protocol,) 等,把用戶名/密碼做為遠(yuǎn)程應(yīng)用的輸入。接著,業(yè)務(wù)邏輯會(huì)返回一個(gè)輸出,該輸出即是在步驟101中獲得的業(yè) 務(wù)邏輯處理結(jié)果,該業(yè)務(wù)邏輯處理結(jié)果也就是請(qǐng)求響應(yīng)的動(dòng)態(tài)網(wǎng)頁(yè)。例如, 提示該用戶名密碼不正確,或者給出一個(gè)信號(hào)證明通過(guò)驗(yàn)證。此時(shí)業(yè)務(wù)邏 輯結(jié)束。因此該處理結(jié)果中包括用于生成該請(qǐng)求響應(yīng)動(dòng)態(tài)網(wǎng)頁(yè)的一個(gè)或多 個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng),在步驟101中要將該業(yè)務(wù)邏輯處理結(jié)果生成結(jié)構(gòu)化的數(shù)據(jù) 上下文。這里的結(jié)構(gòu)化可以理解為生成特定的數(shù)據(jù)結(jié)構(gòu),或者數(shù)據(jù)類等等, 以4更于后面處理。圖2中的左面方框顯示了一個(gè)在步驟101中生成的結(jié)構(gòu)化的數(shù)據(jù)上下 文的實(shí)例,該數(shù)據(jù)上下文包括用于動(dòng)態(tài)網(wǎng)頁(yè)的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)。在 該數(shù)據(jù)上下文的實(shí)例中,Accountld、 Customerld和Balance是基本類型 數(shù)據(jù),而AccountList是一個(gè)隊(duì)列(ArrayList),該隊(duì)列用于存儲(chǔ)多個(gè)數(shù) 據(jù)結(jié)構(gòu),并且該隊(duì)列中的每行是一個(gè)子數(shù)據(jù)上下文,即一個(gè)Accountlnfo 類,該Accountlnfo類用于存儲(chǔ)寸壬何數(shù)據(jù),例力n AccountNumber、 AccountType和AccountBalance的動(dòng)態(tài)數(shù)據(jù)項(xiàng)??偠灾瑧?yīng)該理解業(yè)務(wù)邏輯是一個(gè)非常廣義的說(shuō)法,表示的是真正 的業(yè)務(wù)處理邏輯代碼,與具體的技術(shù)和算法實(shí)現(xiàn)沒(méi)有任何關(guān)系。并且我們 在該步驟只是獲得業(yè)務(wù)邏輯的處理結(jié)果,至于業(yè)務(wù)邏輯如何處理并不在我 們的保護(hù)范圍之內(nèi),此外,在步驟101中生成的結(jié)構(gòu)化的數(shù)據(jù)上下文以及 在數(shù)據(jù)上下文中包含的動(dòng)態(tài)數(shù)據(jù)項(xiàng)如何使用將在下面的步驟102中進(jìn)行詳 細(xì)描述。接著,在步驟102,加栽與在步驟101中的來(lái)自瀏覽器的請(qǐng)求相關(guān)聯(lián) 的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的一個(gè)或多 個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息。模板是網(wǎng)頁(yè)設(shè)計(jì)人員工作的結(jié)果?,F(xiàn)有技術(shù)中 一般動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā)過(guò)程是首先由網(wǎng)頁(yè)開(kāi)發(fā)人員開(kāi)發(fā)靜態(tài)網(wǎng)頁(yè)(比如純HTML),然后交給業(yè) 務(wù)開(kāi)發(fā)人員。業(yè)務(wù)開(kāi)發(fā)人員去修改這個(gè)靜態(tài)網(wǎng)頁(yè),其中嵌入大量的業(yè)務(wù)邏 輯或者顯示邏輯,使得這個(gè)網(wǎng)頁(yè)可以顯示動(dòng)態(tài)數(shù)據(jù),此時(shí),這個(gè)被fl"改過(guò) 的網(wǎng)頁(yè)就是所謂的"模板"。這些模板是存儲(chǔ)在應(yīng)用服務(wù)器端,由應(yīng)用程 序負(fù)責(zé)讀取和解釋,根據(jù)不同的請(qǐng)求,將這些模板文件最終編譯運(yùn)行為標(biāo) 準(zhǔn)的瀏覽器能識(shí)別的標(biāo)示(比如HTML)返回給客戶請(qǐng)求,從而顯示在客 戶端。模板和請(qǐng)求的關(guān)聯(lián),由客戶的應(yīng)用程序來(lái)決定。 一種常用的實(shí)現(xiàn)是 將模板文件和請(qǐng)求直接關(guān)聯(lián),比如用戶請(qǐng)求的統(tǒng)一資源定位符(URL, Uniform Resource Locator ) 是 http:〃www.sami)le.com/mvweb/ account,isp,則將直接調(diào)用名字為"accoimt.jsp"的才莫板文件?,F(xiàn)有技術(shù)中的模板并不是由純標(biāo)記語(yǔ)言表示的模板,也就是說(shuō),它必 須編譯運(yùn)行后才能被瀏覽器瀏覽,而本發(fā)明使用由純標(biāo)記語(yǔ)言表示的模板, 由純標(biāo)記語(yǔ)言表示的模板是可以直接被瀏覽器(例如,網(wǎng)頁(yè)設(shè)計(jì)人員使用 的瀏覽器)解釋的標(biāo)記語(yǔ)言表示的模板,例如IE瀏覽器可以解釋HTML, WIN WAP瀏覽器可以解釋W(xué)ML,則純HTML模板就是一種由純標(biāo)記語(yǔ) 言表示的模板,純WML模板也是一種由純標(biāo)記語(yǔ)言表示的模板,本發(fā)明 生成模板的標(biāo)記語(yǔ)言包括例如HTML, XML, WML等,以及本領(lǐng)域的技 術(shù)人員公知的及未來(lái)發(fā)展的任何其它標(biāo)記語(yǔ)言,本發(fā)明對(duì)此并沒(méi)有限制。 使用由純標(biāo)記語(yǔ)言表示的模板進(jìn)行請(qǐng)求響應(yīng)的瀏覽器展示時(shí),網(wǎng)頁(yè)設(shè)計(jì)人 員不需了解其不可識(shí)別的程序語(yǔ)言,也無(wú)需重新編譯代碼。此外,上述模板中包含的與上述數(shù)據(jù)上下文中的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù) 項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息被記錄在上述模板中的標(biāo)記的屬性中,該屬性例如可 以是HTML, XML, WML模板中的標(biāo)識(shí)ID (Identifier)屬性或者其它 屬性,只要其能夠?qū)?shù)據(jù)上下文中的動(dòng)態(tài)數(shù)據(jù)項(xiàng)與模板中的動(dòng)態(tài)內(nèi)容關(guān)聯(lián) 起來(lái)即可。
下面以由純HTML的標(biāo)記構(gòu)成的純HTML模板為例對(duì)本實(shí)施例進(jìn)行 描述。純HTML才莫板可以由通常的瀏覽器,例如IE瀏覽器瀏覽。該純 HTML模板事先由網(wǎng)頁(yè)設(shè)計(jì)人員編寫,存儲(chǔ)在服務(wù)器中。下面為純HTML的一個(gè)實(shí)例〈input type = "input" name = "userName" value = "my name" id = "userName">,里面包含的所有信息全部是標(biāo)準(zhǔn)的HTML語(yǔ)法,沒(méi)有任何 的非HTML語(yǔ)法出現(xiàn),所以將它稱之為"純HTML"。而下面的實(shí)例不是純HTML:<input type = "input" name = "userName" value = "<%=formBean.getUserName()%>,,> , 請(qǐng) 注 意"<%=formBean.getUserName( )%>,,不是標(biāo)準(zhǔn)的HTML語(yǔ)法,是Java 邏輯代碼,不能被瀏覽器直接識(shí)別,所以這個(gè)不能稱之為"純HTML"。 圖2的右面方框是純HTML模板的 一個(gè)實(shí)例,該純HTML模板沒(méi)有 任何非HTML標(biāo)準(zhǔn)的標(biāo)示,能直接在IE瀏覽器中顯示。在瀏覽器中顯示 為如下兩個(gè)表格Accountld123-456-789CustomerldX00192810281B由iicc2234332.00AccouiitNumbcrAccoimtTypeAccountBalance01010-202920-1929192Credit10000.00對(duì)于圖2右面方框的純HTML模型,將一個(gè)或多個(gè)標(biāo)記的ID屬性作 為與上述數(shù)據(jù)上下文中的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息,例如, 包括Accoimtld、 Customerld、 Balance和AccountList。其中AccountList 是一個(gè)隊(duì)列,其中包含了多條記錄,每條記錄都是另一個(gè)子數(shù)據(jù)上下文 (Accountlnfo類),Accountlnfo類又包括ID屬性AccoimtNumber、 AccoimtType和AccountBalance。這些ID屬性對(duì)應(yīng)的被標(biāo)記的內(nèi)容可以 被圖2中的左邊方框的數(shù)據(jù)上下文中的動(dòng)態(tài)數(shù)據(jù)替換。圖2正是顯示了圖
2中的左邊方框的數(shù)據(jù)上下文和圖2中的右邊方框的模板之間的對(duì)應(yīng)關(guān)系, 表明圖2中的右邊的模板是來(lái)自瀏覽器的請(qǐng)求相關(guān)聯(lián)的模板。應(yīng)該理解, 這里示出的純HTML模型及其ID屬性只是為了示例性說(shuō)明,本發(fā)明可以 使用其它標(biāo)記語(yǔ)言(例如XML或者WML等)及其它屬性實(shí)現(xiàn)。應(yīng)該注意,數(shù)據(jù)上下文的結(jié)構(gòu)應(yīng)該與顯示邏輯相對(duì)應(yīng),以及生成的格 式化數(shù)據(jù)中的屬性名稱和層次位置必須與純HTML模板中定義的各個(gè)ID 屬性相對(duì)應(yīng)。接著,在步驟103,通過(guò)將上述數(shù)據(jù)上下文中的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù) 項(xiàng)合并到上述模板中。具體地,將上述一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述^^板中的方法可以 是本領(lǐng)域的技術(shù)人員公知的任何方法,其包括但不限于如下步驟遍歷上 述生成的數(shù)據(jù)上下文中的每一個(gè)數(shù)據(jù)項(xiàng);以及如果在上述模板找到與該數(shù) 據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息,則將上述數(shù)據(jù)項(xiàng)替換到上述模板中的相應(yīng)位置。例如,對(duì)于上述純HTML模板,遍歷上迷生成的數(shù)據(jù)上下文中的每一 個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng),如果在上述純HTML模板中找到與該動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的 ID屬性,則將上述動(dòng)態(tài)數(shù)據(jù)項(xiàng)替換到上述純HTML模板中的相應(yīng)位置。 而且,當(dāng)在上述純HTML模板中沒(méi)有與上述生成的數(shù)據(jù)上下文中的該動(dòng)態(tài) 數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的ID屬性時(shí),才艮告該鐐溪信息。此外,當(dāng)遍歷結(jié)束時(shí)在上 述純HTML模板中還有ID屬性的值沒(méi)被相應(yīng)的動(dòng)態(tài)數(shù)據(jù)替換時(shí),報(bào)告該 錯(cuò)誤信息。上述的遍歷方法和報(bào)錯(cuò)方法可以利用本領(lǐng)域的技術(shù)人員z^知的 任何方法,例如可以采用字符串查找匹配,將id屬性出現(xiàn)的位置進(jìn)行編碼 或者將模板拆分為DOM結(jié)點(diǎn)等等方式,本發(fā)明對(duì)此并沒(méi)有限制,在此不 再贅述。此外,本實(shí)施例的方法可以在步驟103之前,對(duì)上述模板進(jìn)行語(yǔ)法檢 查,以發(fā)現(xiàn)其中的任何編寫錯(cuò)誤,并且在步驟103之后,還可以對(duì)合并生 成的網(wǎng)頁(yè)進(jìn)行語(yǔ)法檢查,以發(fā)現(xiàn)合并過(guò)程中產(chǎn)生的任何錯(cuò)誤。上述的語(yǔ)法 檢查方法可以利用本領(lǐng)域的技術(shù)人員公知的任何方法,比如標(biāo)示匹配原則 校驗(yàn),位置定位校驗(yàn)等等,本發(fā)明對(duì)此并沒(méi)有限制,在此不再贅述。 通過(guò)以上的說(shuō)明可知,本實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法使用由純 標(biāo)記語(yǔ)言表示的模板,并不需要附加的編譯器對(duì)模板進(jìn)行編譯,從而簡(jiǎn)化 了生成動(dòng)態(tài)網(wǎng)頁(yè)的過(guò)程。通過(guò)使用純標(biāo)記語(yǔ)言表示的模板,可以釆用現(xiàn)有 的任何標(biāo)記語(yǔ)言設(shè)計(jì)工具進(jìn)行網(wǎng)頁(yè)設(shè)計(jì),從而對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員來(lái)說(shuō)不需 要任何其它技術(shù)要求。此外,網(wǎng)頁(yè)的整個(gè)開(kāi)發(fā)過(guò)程和動(dòng)態(tài)功能的實(shí)現(xiàn)都是 基于標(biāo)記語(yǔ)言,沒(méi)有引入任何非標(biāo)記語(yǔ)言的腳本或標(biāo)簽,從而使網(wǎng)頁(yè)設(shè)計(jì)人員和開(kāi)發(fā)人員之間的聯(lián)系變得簡(jiǎn)單。此外,本實(shí)施例的方法不需要對(duì)模 板進(jìn)行任何的預(yù)處理,只需要在運(yùn)行時(shí)將其中的動(dòng)態(tài)數(shù)據(jù)項(xiàng)進(jìn)行相應(yīng)的替換,從而是一種簡(jiǎn)單有效的網(wǎng)頁(yè)生成方法。用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置在同一發(fā)明構(gòu)思下,圖3是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于生成動(dòng) 態(tài)網(wǎng)頁(yè)的裝置的方框圖。下面就結(jié)合該圖,對(duì)本實(shí)施例進(jìn)行描述。對(duì)于那 些與前面實(shí)施例相同的部分,適當(dāng)省略其說(shuō)明。在圖3中,用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置300包括:業(yè)務(wù)邏輯處理單元301, 根據(jù)來(lái)自瀏覽器的請(qǐng)求獲得業(yè)務(wù)邏輯處理的結(jié)果,將該業(yè)務(wù)邏輯處理結(jié)果 生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于上述動(dòng)態(tài)網(wǎng)頁(yè) 的動(dòng)態(tài)數(shù)據(jù)項(xiàng);模板加栽單元302,用于加栽與上述請(qǐng)求相關(guān)聯(lián)的模板, 該模板可以被上述瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少 一個(gè)動(dòng)態(tài) 數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息;以及合并單元303,將上述數(shù)據(jù)上下文中的每 一個(gè)動(dòng)態(tài)數(shù)據(jù)合并到上述模板中。具體地,業(yè)務(wù)邏輯處理單元301接收到的來(lái)自瀏覽器的請(qǐng)求包括本領(lǐng) 域的技術(shù)人員公知的任何Web請(qǐng)求,例如用戶在網(wǎng)上銀行上查詢余額的請(qǐng) 求、用戶登陸某個(gè)帳戶時(shí)進(jìn)行身傷H人證的請(qǐng)求、基于某個(gè)關(guān)鍵字進(jìn)行搜索 的請(qǐng)求等等,本發(fā)明對(duì)此沒(méi)有任何限制。業(yè)務(wù)邏輯處理單元301進(jìn)行的"業(yè)務(wù)邏輯"更多的是一種語(yǔ)義上的術(shù) 語(yǔ),而非技術(shù)上。只要是跟業(yè)務(wù)處理有關(guān)的任何代碼都可以叫做業(yè)務(wù)邏輯。 對(duì)于任何系統(tǒng),其目的都在于接受用戶的輸入?yún)?shù)==> 根據(jù)輸入?yún)?shù) 進(jìn)行業(yè)務(wù)(交易)==> 返回顯示結(jié)果。不管什么系統(tǒng),都基于這個(gè)基本 的流程。這里根據(jù)輸入^t進(jìn)行的業(yè)務(wù)(交易),就是所謂的"業(yè)務(wù)邏輯"。描述業(yè)務(wù)邏輯處理單元301進(jìn)行的業(yè)務(wù)邏輯的例子可以參見(jiàn)用于生成 動(dòng)態(tài)網(wǎng)頁(yè)的方法中的實(shí)例,這里不再贅述??偠灾瑧?yīng)該理解業(yè)務(wù)邏輯是一個(gè)非常廣義的說(shuō)法,表示的是真正 的業(yè)務(wù)處理邏輯代碼,與具體的技術(shù)和算法實(shí)現(xiàn)沒(méi)有任何關(guān)系。此外,業(yè) 務(wù)邏輯處理單元301生成的數(shù)據(jù)上下文以及在數(shù)據(jù)上下文中包含的動(dòng)態(tài)數(shù) 據(jù)將在下面進(jìn)行詳細(xì)描述。模板加載單元302加栽與在業(yè)務(wù)邏輯處理單元301接收到的來(lái)自瀏覽 器的請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下 文中的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息。具體地,該模板加栽單元302加載的模板是由可以被瀏覽器(例如, 網(wǎng)頁(yè)設(shè)計(jì)人員使用的瀏覽器)解釋的標(biāo)記語(yǔ)言表示的模板,標(biāo)記語(yǔ)言包括 例如HTML, XML, WML等,以及本領(lǐng)域的技術(shù)人員公知的及未來(lái)發(fā)展 的任何其它標(biāo)記語(yǔ)言,本發(fā)明對(duì)此并沒(méi)有限制。此外,上述模板中包含的與上述數(shù)據(jù)上下文中的一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù) 項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息被記錄在上述才莫板中的標(biāo)記的屬性中,該屬性例如可 以是HTML, XML, WML才莫板中的標(biāo)識(shí)ID (Identifier)屬性或者其它 屬性,只要其能夠?qū)?shù)據(jù)上下文中的動(dòng)態(tài)數(shù)據(jù)項(xiàng)與模板中的動(dòng)態(tài)內(nèi)容關(guān)聯(lián) 起來(lái)即可。由純HTML的標(biāo)記構(gòu)成的純HTML模板的實(shí)例可以參見(jiàn)用于生成動(dòng) 態(tài)網(wǎng)頁(yè)的方法的實(shí)例,這里不再贅述。合并單元303將業(yè)務(wù)邏輯處理單元301生成的上述數(shù)據(jù)上下文中的一 個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到模^口載單元302加栽的上述模板中。具體地,將上述一個(gè)或多個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述才莫板中的合并單元 303可以是本領(lǐng)域的技術(shù)人員公知的任何單元,其包括但不限于遍歷單 元,用于遍歷上述生成的數(shù)據(jù)上下文中的每一個(gè)數(shù)據(jù)項(xiàng);以及替換單元, 如果在上述模板找到與該數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息,則將上述數(shù)據(jù)項(xiàng)替換 到上述模板中的相應(yīng)位置。
例如,對(duì)于上述純HTML模板,上述遍歷單元遍歷上述生成的數(shù)據(jù)上 下文中的每一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng),以及如果在上述純HTML模板中找到與該動(dòng) 態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的ID屬性,上述替換單元將上述動(dòng)態(tài)數(shù)據(jù)項(xiàng)替換到上述 純HTML模板中的相應(yīng)位置。而且,合并單元303還包括一報(bào)錯(cuò)單元,當(dāng) 在上述純HTML模板中沒(méi)有與上述生成的數(shù)據(jù)上下文中的該動(dòng)態(tài)數(shù)據(jù)項(xiàng) 相對(duì)應(yīng)的ID屬性時(shí),該報(bào)錯(cuò)單元報(bào)告該錯(cuò)誤信息。此外,當(dāng)遍歷結(jié)束時(shí) 在上述純HTML模板中還有ID屬性的值沒(méi)被相應(yīng)的動(dòng)態(tài)數(shù)據(jù)替換時(shí),該 報(bào)錯(cuò)單元報(bào)告該g信息。上述遍歷單元、替換單元和報(bào)錯(cuò)單元可以是本 領(lǐng)域的技術(shù)人員公知的任何單元,例如可以采用字符串查找匹配單元,將 id屬性出現(xiàn)的位置進(jìn)行編碼單元或者將模板拆分為DOM結(jié)點(diǎn)單元等等方 式,本發(fā)明對(duì)此并沒(méi)有限制,在此不再贅述。此外,本實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置300還包括一語(yǔ)法檢查單 元,其在合并單元303進(jìn)行上述合并之前,對(duì)上述模板進(jìn)行語(yǔ)法檢查,以 發(fā)現(xiàn)其中的任何編寫錯(cuò)誤,并且在合并單元303進(jìn)行上述合并之后,對(duì)上 述生成的動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行語(yǔ)法檢查,以發(fā)現(xiàn)合并過(guò)程中產(chǎn)生的任何錯(cuò)誤。語(yǔ) 法檢查單元可以是本領(lǐng)域的技術(shù)人員公知的任何單元,比如標(biāo)示匹配原則 校驗(yàn)單元,位置定位校驗(yàn)單元等等,本發(fā)明對(duì)此并沒(méi)有限制,在此不再贅 述。通過(guò)以上的說(shuō)明可知,本實(shí)施例的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置使用由純 標(biāo)記語(yǔ)言表示的模板,并不需要附加的編譯器對(duì)模板進(jìn)行編譯,從而簡(jiǎn)化 了生成動(dòng)態(tài)網(wǎng)頁(yè)的過(guò)程。通過(guò)使用純標(biāo)記語(yǔ)言表示的模板,可以采用現(xiàn)有 的任何標(biāo)記語(yǔ)言設(shè)計(jì)工具進(jìn)行網(wǎng)頁(yè)設(shè)計(jì),從而對(duì)于網(wǎng)頁(yè)設(shè)計(jì)人員來(lái)說(shuō)不需 要任何其它技術(shù)要求。此外,網(wǎng)頁(yè)的整個(gè)開(kāi)發(fā)過(guò)程和動(dòng)態(tài)功能的實(shí)現(xiàn)都是 基于標(biāo)記語(yǔ)言,沒(méi)有引入任何非標(biāo)記語(yǔ)言的腳本或標(biāo)簽,從而使網(wǎng)頁(yè)設(shè)計(jì)人員和開(kāi)發(fā)人員之間的聯(lián)系變的簡(jiǎn)單。此外,本實(shí)施例的裝置不需要對(duì)模 板進(jìn)行任何的預(yù)處理,只需要在運(yùn)行時(shí)將其中的動(dòng)態(tài)數(shù)據(jù)項(xiàng)進(jìn)行相應(yīng)的替 換,從而是一種簡(jiǎn)單有效的網(wǎng)頁(yè)生成裝置。以上雖然通過(guò)一些示例性的實(shí)施例詳細(xì)地描述了本發(fā)明的用于生成動(dòng)
態(tài)網(wǎng)頁(yè)的方法以及用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,但是以上這些實(shí)施例并不是 窮舉的,本領(lǐng)域技術(shù)人員可以在本發(fā)明的精神和范圍內(nèi)實(shí)現(xiàn)各種變化和修改。因此,本發(fā)明并不限于這些實(shí)施例,本發(fā)明的范圍僅由所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,包括以下步驟根據(jù)響應(yīng)瀏覽器的請(qǐng)求獲得的業(yè)務(wù)邏輯處理的結(jié)果,生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于上述動(dòng)態(tài)網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)項(xiàng);加載與上述請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息;以及將上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述模板中得到動(dòng)態(tài)網(wǎng)頁(yè)。
2. 根據(jù)權(quán)利要求l所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,其中,上述合 并步驟包括遍歷上述生成的數(shù)據(jù)上下文中的每一個(gè)數(shù)據(jù)項(xiàng); 如果在上述模板找到與該數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息,則將上述數(shù)據(jù)項(xiàng) 替換到上述才莫板中的相應(yīng)位置。
3. 根據(jù)權(quán)利要求2所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,其中,上述合 并步驟還包括當(dāng)在上述模板中沒(méi)有與上述生成的數(shù)據(jù)上下文中的該數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的 關(guān)聯(lián)信息時(shí),報(bào)告該餘溪信息。
4. 根據(jù)權(quán)利要求2所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,其中,上述合 并步驟還包括當(dāng)遍歷結(jié)束時(shí)在上述模板中還有關(guān)聯(lián)信息沒(méi)被相應(yīng)的動(dòng)態(tài)數(shù)據(jù)項(xiàng)替換 時(shí),報(bào)告該錯(cuò)誤信息。
5. 根據(jù)權(quán)利要求l所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,還包括 在上述合并步驟之前,對(duì)上述模板進(jìn)行語(yǔ)法檢查。
6. 根據(jù)權(quán)利要求l所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,還包括 在上述合并步驟之后,對(duì)上述生成的動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行語(yǔ)法檢查。
7. 根據(jù)權(quán)利要求1-6中任何一項(xiàng)所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法, 其中,上述模板是由標(biāo)記語(yǔ)言表示的模板;上述模板中包含的與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng) 的關(guān)聯(lián)信息被記錄在上述模板中的標(biāo)記的屬性中。
8. 根據(jù)權(quán)利要求7所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,其中,上述模 板是由HTML、 XML或者WML表示的模板。
9. 根據(jù)權(quán)利要求8所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,其中,上述模 板中包含的與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息 被記錄在上述模板中的標(biāo)記的ID屬性中。
10. —種用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,包括以下步驟 業(yè)務(wù)邏輯處理單元,根據(jù)響應(yīng)瀏覽器的請(qǐng)求獲得的業(yè)務(wù)邏輯處理的結(jié)果,生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于上述動(dòng)態(tài) 網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)項(xiàng);模板加載單元,用于加載與上述請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏 覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián) 信息;以及合并單元,將上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述模 板中得到動(dòng)態(tài)網(wǎng)頁(yè)。
11. 根據(jù)權(quán)利要求10所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,其中,上述 合并單元包括遍歷單元,用于遍歷上述生成的數(shù)據(jù)上下文中的每一個(gè)數(shù)據(jù)項(xiàng); 替換單元,如果在上述模板找到與該數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息,則將 上述數(shù)據(jù)項(xiàng)替換到上述模板中的相應(yīng)位置。
12. 根據(jù)權(quán)利要求11所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,其中,上述 合并單元還包括報(bào)錯(cuò)單元,當(dāng)在上述模板中沒(méi)有與上述生成的數(shù)據(jù)上下文中的該數(shù)據(jù) 項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息時(shí),報(bào)告該餘溪信息。
13. 根據(jù)權(quán)利要求11所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,其中,上述 合并單元還包括報(bào)錯(cuò)單元,當(dāng)遍歷結(jié)束時(shí)在上述模板中還有關(guān)聯(lián)信息沒(méi)被相應(yīng)的動(dòng)態(tài)數(shù)據(jù)項(xiàng)替換時(shí),報(bào)告該錯(cuò)誤信息。
14. 根據(jù)權(quán)利要求10所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,還包括 語(yǔ)法檢查單元,在上述合并單元進(jìn)行合并之前,對(duì)上述模板進(jìn)行語(yǔ)法檢查。
15. 根據(jù)權(quán)利要求10所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,還包括 語(yǔ)法檢查單元,在上述合并單元進(jìn)行合并之后,對(duì)上述生成的動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行語(yǔ)法檢查。
16. 根據(jù)權(quán)利要求10-15中任何一項(xiàng)所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝 置,其中,上述模板是由標(biāo)記語(yǔ)言表示的模板;上述模板中包含的與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng) 的關(guān)聯(lián)信息被記錄在上述模板中的標(biāo)記的屬性中。
17. 根據(jù)權(quán)利要求16所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,其中,上述 模板是由HTML、 XML或者WML表示的模板。
18. 根據(jù)權(quán)利要求17所述的用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置,其中,上述 模板中包含的與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信 息被記錄在上述模板中的標(biāo)記的ID屬性中。
全文摘要
本發(fā)明提供了用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法以及用于生成動(dòng)態(tài)網(wǎng)頁(yè)的裝置。根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于生成動(dòng)態(tài)網(wǎng)頁(yè)的方法,包括以下步驟根據(jù)響應(yīng)瀏覽器的請(qǐng)求獲得的業(yè)務(wù)邏輯處理的結(jié)果,生成結(jié)構(gòu)化的數(shù)據(jù)上下文,該數(shù)據(jù)上下文包括至少一個(gè)用于上述動(dòng)態(tài)網(wǎng)頁(yè)的動(dòng)態(tài)數(shù)據(jù)項(xiàng);加載與上述請(qǐng)求相關(guān)聯(lián)的模板,該模板可以被瀏覽器瀏覽并包含與上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)相對(duì)應(yīng)的關(guān)聯(lián)信息;以及將上述數(shù)據(jù)上下文中的至少一個(gè)動(dòng)態(tài)數(shù)據(jù)項(xiàng)合并到上述模板中得到動(dòng)態(tài)網(wǎng)頁(yè)。
文檔編號(hào)G06F17/30GK101165685SQ20061013577
公開(kāi)日2008年4月23日 申請(qǐng)日期2006年10月19日 優(yōu)先權(quán)日2006年10月19日
發(fā)明者余紹陽(yáng), 單建洪, 盧中延 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1