資源描述:
《基于Rhino引擎的服務(wù)器端JavaScript腳本容器設(shè)計(jì)與實(shí)現(xiàn).pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第4O卷第5期J江.J漢ian大gh學(xué)an學(xué)Un報(bào)iv(.(自Na然t.科Sc學(xué)i.E版d.))Vo1.40No.52012年10月Oct.2012基于Rhino引擎的服務(wù)器端JavaScript腳本容器設(shè)計(jì)與實(shí)現(xiàn)李軼(江漢大學(xué)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,湖北武漢430056)摘要:在JavaScript語言重新受到重視的今天,其運(yùn)行環(huán)境也正逐漸從傳統(tǒng)的Web客戶端向服務(wù)器端延伸。作為服務(wù)器端JavaScript引擎的典型代表,Rhino引擎具有廣泛的平臺(tái)支持和應(yīng)用基礎(chǔ)。通過將Rhino引擎置于一個(gè)標(biāo)準(zhǔn)的Ja
2、vaservlet中.便可構(gòu)造出一個(gè)支持JavaScript的服務(wù)端腳本容器借助Rhino引擎,Web開發(fā)者不僅能在腳本容器內(nèi)部訪問Java對(duì)象,而且還獲得了整個(gè)Java平臺(tái)的豐富類庫及應(yīng)用框架的支持。與此同時(shí),服務(wù)器端JavaScript還統(tǒng)一了Web開發(fā)的前、后臺(tái)語言,降低了開發(fā)難度并提高了開發(fā)效率關(guān)鍵詞:JavaScript引擎:服務(wù)頁面:Javaservlet中圖分類號(hào):TP393.4文獻(xiàn)標(biāo)志碼:A文章編號(hào)1.2遵循JavaScriptECMA一262標(biāo)準(zhǔn)O引言JavaScript語言的國際標(biāo)準(zhǔn)
3、包括:ECMA一262、在JavaScript語言重新受到重視的今天,其得ECMA一327和ECMA一357,其中較為通行的標(biāo)準(zhǔn)到了越來越廣泛的應(yīng)用。與此同時(shí),其運(yùn)行環(huán)境為ECMA一262E引。由于該標(biāo)準(zhǔn)也是Rhino引擎的也正逐漸從傳統(tǒng)的Web客戶端向服務(wù)端延伸H]。支持標(biāo)準(zhǔn),因此ECMA一262也將成為本容器的許多JavaScript腳本引擎紛紛出現(xiàn),主要代表JavaScript標(biāo)準(zhǔn)。包括:SpiderMonkey_2]、Node.js[。和Rhino_4]o而1.3支持CommJS模塊API標(biāo)準(zhǔn)I
4、.I.1Rhino作為基于Java平臺(tái)的JavaScript引擎,其CommJS¨6]是目前新興的服務(wù)器端JavaScript借助Java平臺(tái)的依托更加具有廣泛的平臺(tái)支持API標(biāo)準(zhǔn)。其主要目的是為服務(wù)器端JavaScript和應(yīng)用基礎(chǔ)。通過將Rhino引擎置于一個(gè)標(biāo)準(zhǔn)的應(yīng)用的開發(fā)制定一個(gè)通用的API標(biāo)準(zhǔn),涵蓋了模Javaservlet中,便可構(gòu)造出一個(gè)支持JavaScript塊、二進(jìn)制數(shù)據(jù)對(duì)象、編碼、I/0和文件系統(tǒng)等的服務(wù)端腳本容器。方面。其中CommJS模塊API標(biāo)準(zhǔn)是基于模塊化大規(guī)模應(yīng)用開發(fā)的基礎(chǔ)
5、,因此本容器將以1容器的主要特性CommJS模塊標(biāo)準(zhǔn)1.1.1l7為依據(jù),為基于模塊化1.1嵌入式JavaScript腳本的JavaScript服務(wù)器端開發(fā)提供支持。為與目前主流基于Web服務(wù)頁面技術(shù)(如:1.4JavaScript表達(dá)式輸出JSP、ASPX、PHP等)保持一致,本容器以服務(wù)頁為簡化JavaScript變量及表達(dá)式訪問和輸出,面方式執(zhí)行服務(wù)器端JavaScript腳本,即本容器支持與JSPEL表達(dá)式語言類似的表達(dá)式JavaScript腳本通過標(biāo)記“<%”與“%>”嵌入于一個(gè)訪問方法,即通
6、過表達(dá)式${JavaScript表達(dá)式}可標(biāo)準(zhǔn)html文檔中。容器通過對(duì)整個(gè)服務(wù)頁面的解直接獲取任意有效JavaScript表達(dá)式的字符串值。析和轉(zhuǎn)換得到一個(gè)完整的JavaScript腳本,之后2容器設(shè)計(jì)調(diào)用Rhino引擎執(zhí)行該腳本,最終得到標(biāo)準(zhǔn)的html輸出。特別的,為與現(xiàn)有服務(wù)頁面技術(shù)相區(qū)2.1架構(gòu)別,本容器服務(wù)頁面文件的擴(kuò)展名定義為“.jsx”。為簡化設(shè)計(jì),最大化地利用現(xiàn)有資源和技收稿日期:2012—03—22作者簡介:李軼(1976一),男,實(shí)驗(yàn)師,碩士,研究方向:網(wǎng)絡(luò)管理。2012年第5期李軼
7、:基于Rhino引擎的服務(wù)器端JavaScript腳本容器設(shè)計(jì)與實(shí)現(xiàn)57術(shù),本容器采用基于JavaServlet的二層架構(gòu)。JavaScript對(duì)象封裝.用于向客戶輸出http響應(yīng)。外層為任一符合ServletAPIE。標(biāo)準(zhǔn)的Servlet容器其包含的方法與接口HttpServletResponse完全(例如ApacheTomcat)。內(nèi)層為JavaSefipt容器相同。Servlet。其將iSX服務(wù)頁面轉(zhuǎn)換為服務(wù)器端2.3.3Out對(duì)象Out對(duì)象用于向Web客戶輸出JavaScript腳本,然后調(diào)用R
8、hino引擎,用以執(zhí)行字符文本。其是類iava.io.PrintWriter的JavaScript該JavaScript腳本,具體架構(gòu)如圖1所示。對(duì)象封裝。其包含的方法與iava.io.PrintWriter完全相同。2-3.4Session對(duì)象Session對(duì)象是ServletAPI接口javax.servlet.http.HttpSession的JavaScript對(duì)象封裝.用于管理與服務(wù)器不同客戶間的會(huì)話。其包含的方法與接口HttpS