亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        GWT應(yīng)用程序與服務(wù)器間數(shù)據(jù)傳遞技術(shù)的研究

        2010-07-30 02:57:24駱開華
        電腦知識與技術(shù) 2010年11期
        關(guān)鍵詞:應(yīng)用程序

        駱開華

        摘要:GWT是Google公司發(fā)布的用于開發(fā)Web應(yīng)用程序的產(chǎn)品。該文分析了Ajax應(yīng)用程序利用GWT的各種庫與基本的服務(wù)器、第三方服務(wù)器以及有狀態(tài)服務(wù)器和無狀態(tài)服務(wù)器等高級服務(wù)器進(jìn)行數(shù)據(jù)傳遞的方法和技術(shù)。

        關(guān)鍵詞:GWT;Ajax;應(yīng)用程序;數(shù)據(jù)傳遞

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2010)11-2645-02

        The Study on the Data Transfer Technology Between GWT Application and Server

        LUO Kai-hua

        (Zengcheng College of South China Normal University, Guangzhou 513363, China)

        Abstract: GWT is Google's announcement of an application for the development of Web products. The paper analyzes the Ajax applications that use a variety of library and basic GWT server, third-party servers, and stateful and stateless server, the server and other senior server data transmission methods and techniques.

        Keywords: GWT; ajax; application; data transfer

        GWT(Google Web Toolkit)是Google公司發(fā)布的開發(fā)Web應(yīng)用程序的產(chǎn)品。通過GWT,開發(fā)人員可以更容易、更方便地開發(fā)出Ajax應(yīng)用程序,從而大大地降低了開發(fā)的難度和成本,特別是結(jié)合Eclipse Google插件的使用,相對于其他Web開發(fā)工具更具優(yōu)勢,因而越來越受到Web開發(fā)人員的歡迎和青睞。

        Ajax(Asynchronous JavaScript and XML,異步JavaScript XML)是開發(fā)Web應(yīng)用程序的新技術(shù),它的出現(xiàn)導(dǎo)致了Web應(yīng)用程序架構(gòu)的一次重大變革。Ajax應(yīng)用程序不但繼承了傳統(tǒng)Web應(yīng)用程序易于分發(fā)的優(yōu)點(diǎn),同時(shí),又具有桌面應(yīng)用程序靈活和易響應(yīng)性的界面,特別是對服務(wù)器端數(shù)據(jù)傳遞的良好支持,更是Ajax技術(shù)的一大亮點(diǎn)。GWT作為開發(fā)Ajax應(yīng)用程序的利器,它的服務(wù)器整合技術(shù)同樣多樣和完善。下面,本文將對GWT應(yīng)用程序和服務(wù)器間數(shù)據(jù)傳遞的方法和技術(shù)進(jìn)行詳細(xì)地研究。

        1 基本的服務(wù)器數(shù)據(jù)傳遞技術(shù)

        傳統(tǒng)的Web應(yīng)用程序都是通過HTTP請求數(shù)據(jù)和表單與服務(wù)器進(jìn)行數(shù)據(jù)傳遞,GWT不但同樣支持這一基本的數(shù)據(jù)傳遞方法,并且使用更加簡單。

        1.1 通過異步HTTP請求傳遞

        通過對服務(wù)器的異步調(diào)用進(jìn)行數(shù)據(jù)傳遞,從而避免刷新頁面是Ajax最核心的能力,而這種能力是通過JavaScript來實(shí)現(xiàn)的,這種方法的缺點(diǎn)是針對不同的瀏覽器需使用不同的JavaScript對象。而使用GWT開發(fā),只需簡單地調(diào)用HTTP庫和GWT中的類來實(shí)現(xiàn)即可。

        使用HTTP庫,必需先把庫文件導(dǎo)入GWT模塊文件中。HTTP庫位于com.google.gwt.http.client包內(nèi),在代碼中添加這個(gè)包的方法如下:

        在應(yīng)用程序中使用這個(gè)庫方法比較簡單。首先,創(chuàng)建一個(gè)RequestBuilder實(shí)例,用以設(shè)置請求的細(xì)節(jié);接著,通過sendRequest方法發(fā)送請求;最后,請求發(fā)送后,如果失敗,會(huì)調(diào)用RequestCallback實(shí)例的onError方法,如果成功則調(diào)用該實(shí)例的onResponseReceived方法。傳遞的數(shù)據(jù)可以是任何格式的,但最好使用JSON和XML這兩種格式,因?yàn)镚WT有JSON和XML庫。

        1.2 利用傳統(tǒng)的服務(wù)器端腳本技術(shù)

        目前,大部分的Web應(yīng)用程序都運(yùn)行在各種服務(wù)器端的腳本引擎上,通過這些腳步跟服務(wù)器進(jìn)行數(shù)據(jù)交換。GWT提供了工具使Ajax應(yīng)用程序與服務(wù)器端的腳本進(jìn)行交換??蛻舳说哪_本參數(shù)大都以GET或POST方式來發(fā)送,為此,GWT提供了URL.encodeComponent方法對任何可能妨礙解析URL及其參數(shù)的字符進(jìn)行編碼,提供URL.encode方法對URL的非參數(shù)部分進(jìn)行編碼。舉例如下:

        RequestBuilder RequestBuilder=new RequestBuilder(

        RequestBuilder.GET,

        GWT.getModuleBaseURL()+”/useractive.php?name=”+

        URL.encodeComponent( user.gerNme()));

        以上代碼實(shí)現(xiàn)了客戶端請求修改URL使其指向useractive.php的腳本功能。

        2 利用XML和JSON格式庫

        傳統(tǒng)的Web應(yīng)用程序使用的是HTML或純文本進(jìn)行數(shù)據(jù)傳輸,但這些數(shù)據(jù)格式并不具有適合編程的結(jié)構(gòu)化形式。為此,GWT提供了XML和JSON庫,利用這兩種結(jié)構(gòu)形式,客戶端就可以和服務(wù)器端進(jìn)行結(jié)構(gòu)化數(shù)據(jù)的傳遞。

        XML是Ajax應(yīng)用程序中一個(gè)重要的組成部分,其語法與HTML相似,但使用方法卻大相徑庭。GWT的XML庫中包含了各種操作XML的類,使用XML庫來解釋數(shù)據(jù)時(shí),總是要從調(diào)用XMLParser類的靜態(tài)方法parse開始。XML的結(jié)構(gòu)可以分成元素、屬性和文本,訪問XML數(shù)據(jù)最常用的類是Document、Element和Text類。XML庫也支持相反的操作,即可以利用相關(guān)的類構(gòu)成一個(gè)XML對象模型。

        JSON(JavaScript Object Notation ,JavaScript對象表示法 )數(shù)據(jù)的大小和語法與XML完全不同,JSON的結(jié)構(gòu)可以分成對象、數(shù)組和值。JSON也能像XML一樣表示數(shù)據(jù)的層次結(jié)構(gòu)和具有自我描述的能力,但它具有很多XML所沒有的優(yōu)點(diǎn)。JSON庫位于com.google.gwt.json.client中,要使用這個(gè)庫必須通過下面的語句把它導(dǎo)入:

        與XML類似,也必須調(diào)用GWT的JSONParser類的parse方法來解釋JSON的數(shù)據(jù),此方法將JSON字符串轉(zhuǎn)換為JSONValue對象。接著,調(diào)用JSONObject.isObject(),此時(shí)返回一個(gè)實(shí)例。然后,接著調(diào)用JSONObject.keySet()取得對象的鍵值。最后,檢測該鍵值,如果符合,則利用JSONObject.get()取得該值,否則,顯示error信息。

        3 與第三方服務(wù)器的數(shù)據(jù)傳遞

        一般來說,Ajax應(yīng)用程序是不能與第三方服務(wù)器通信的,這樣的同源策略確保了不同域之間的JavaScript不會(huì)修改其他域的HTML,根據(jù)這個(gè)策略,用戶也能確定自己當(dāng)前查看的網(wǎng)頁是否來自正在使用的域。但同源策略限制了Ajax應(yīng)用程序從其他域下載數(shù)據(jù),限制了Ajax應(yīng)用程序的很多Web服務(wù),所以,這一策略有其的限制性。使用GWT,我們可以有多種方法突破這種限制。

        3.1 使用JavaScript API

        Google提供了能夠包含在Ajax應(yīng)用程序中的JavaScript庫,這種庫在HTML中允許利用script標(biāo)簽被從第三方服務(wù)器中導(dǎo)入。Gadget Desktop應(yīng)用程序中使用Google Ajax Feed API從第三方站點(diǎn)站點(diǎn)加載RSS源就是一個(gè)很好的例子。

        在GWT應(yīng)用程序中要使用JavaScript API則必須把API添加到主HTML頁面的head標(biāo)簽中。加載后,JavaScript API就可以在GWT應(yīng)用程序中使用了。但此時(shí)必須使用GWT的JSNI來訪問加載到本地的JavaScript API所提供的函數(shù)。

        3.2 使用JSONP

        利用JSOP從第三方服務(wù)器上加載結(jié)構(gòu)化的數(shù)據(jù)也是一種很好的方式。這個(gè)過程比較簡單,首先,GWT應(yīng)用程序在HTML文檔中添加一個(gè)script標(biāo)簽,瀏覽器根據(jù)這個(gè)標(biāo)簽提供的URL加載腳本。然后,第三方服務(wù)器根據(jù)URL請求生成由回調(diào)方法包裝的JSON輸出。最后,瀏覽器調(diào)用回調(diào)函數(shù)。

        3.3 使用HTTP代理

        所謂HTTP代理就是給Ajax應(yīng)用程序添加服務(wù)器組件,把當(dāng)前服務(wù)器當(dāng)做一個(gè)代理,將應(yīng)用程序的請求轉(zhuǎn)給第三方服務(wù)器。相對于前面兩種方式,使用HTTP代理更有利于應(yīng)用程序和服務(wù)器進(jìn)行復(fù)雜的交互。

        4 與高級服務(wù)器的數(shù)據(jù)傳遞

        對于基于HTTP的應(yīng)用程序,Web服務(wù)器會(huì)記住應(yīng)用程序的狀態(tài)。對于這種有狀態(tài)服務(wù)器,GWT應(yīng)用程序可以利用客戶端的有狀態(tài)信息來增強(qiáng)用戶體驗(yàn)。此時(shí),GWT應(yīng)用程序使用HTTP和XML庫來實(shí)現(xiàn)客戶端完成遠(yuǎn)程調(diào)用進(jìn)而操作服務(wù)器端的數(shù)據(jù)。

        GWT在應(yīng)用程序與高級服務(wù)器進(jìn)行數(shù)據(jù)傳遞最大的優(yōu)勢和好處體現(xiàn)在與無狀態(tài)服務(wù)器的整合中。利用GWT-RPC庫,開發(fā)者可以像開發(fā)本地接口那樣迅速地編寫遠(yuǎn)程接口。此時(shí)的應(yīng)用程序可以把用戶的操作隔離在客戶端,較小的工作單元在客戶端完成,只有一次較大的事務(wù)完成后才向服務(wù)器提交請求。這種方式有利于提高應(yīng)用程序執(zhí)行效率和減少服務(wù)器的負(fù)擔(dān),擴(kuò)展了瀏覽器和服務(wù)器異步通信的能力。

        GWT-RPC庫有兩個(gè)軟件包,分別是為客戶端和服務(wù)器端的RPC提供支持的com.google.gwt.user.client.rpc和com.google.gwt.user.server.rpc。其中,客戶端提供的接口用來對應(yīng)用程序中將要用于RPC的接口進(jìn)行標(biāo)記,當(dāng)GWT編譯客戶端項(xiàng)目時(shí),則把這個(gè)標(biāo)記了的接口生成出來RPC編組的必要代碼。服務(wù)器端的RPC包則為了在Tomcat和Jetty這類java servlet容器使用而創(chuàng)建的。如在Tomcat中要使用RPC包,部署如下:在Tomcat的安裝目錄下面的Webapps目錄中創(chuàng)建應(yīng)用程序,然后把GWT庫放在應(yīng)用程序目錄下面的WEB-INF文件夾下,把配置的servlet放在應(yīng)用程序目錄下面的lib文件夾下,并在該文件夾下建立Web.xml等類配置文件。

        5 結(jié)束語

        實(shí)踐證明,利用GWT的XML、JSON和RPC等庫使Ajax應(yīng)用程序與傳統(tǒng)的基本服務(wù)器、第三方服務(wù)器以及無狀態(tài)服務(wù)器和有狀態(tài)服務(wù)器等高級服務(wù)器的數(shù)據(jù)傳遞方式更多樣、使用更簡單。可見,GWT確實(shí)是開發(fā)Ajax應(yīng)用程序的一把利器。

        參考文獻(xiàn):

        [1] Prabhakar Chaganti.Google Web Toolkit:GWT Java AJAX編程[M].北京:人民郵電出版社,2009.

        [2] 吉融.GWT入門與經(jīng)典實(shí)例解析[M].北京:機(jī)械工業(yè)出版社,2008.

        [3] Crane D,Bibeault B,Sonneveld J,et al.Ajax實(shí)戰(zhàn)實(shí)例詳解[M].北京:人民郵電出版社,2008.

        猜你喜歡
        應(yīng)用程序
        刪除Win10中自帶的應(yīng)用程序
        谷歌禁止加密貨幣應(yīng)用程序
        關(guān)閉應(yīng)用程序更新提醒
        電腦迷(2012年15期)2012-04-29 17:09:47
        三星電子將開設(shè)應(yīng)用程序下載商店
        微軟軟件商店開始接受應(yīng)用程序
        啟動(dòng)后提示MOM.EXE錯(cuò)誤
        麻豆╳╳╳乱女另类| 狠狠久久av一区二区三区| 狂插美女流出白浆视频在线观看| 日本一区二区三区爆乳| 久久久久亚洲精品无码网址色欲| 亚洲熟妇一区无码| 91国语对白在线观看| 大陆老熟女自拍自偷露脸| 琪琪的色原网站| 午夜一级在线| 日日噜噜夜夜久久密挑| 国产自拍av在线观看视频| 亚洲色精品aⅴ一区区三区| 精品国产AⅤ一区二区三区4区| 激情视频在线观看免费播放| 国产精品一区二区三区在线蜜桃 | 清纯唯美亚洲经典中文字幕| 国产特级毛片aaaaaa高潮流水| 四川少妇大战4黑人| 91久久国产自产拍夜夜嗨| 国产精品又爽又粗又猛又黄| 久久久久亚洲av成人片| 日本一区午夜艳熟免费| 欧美国产伦久久久久久久| 国产一区二区三区在线大屁股| 人妻体体内射精一区二区| 97视频在线观看免费| 在线播放偷拍一区二区| 欧美v国产v亚洲v日韩九九| 久久精品人人做人人爽电影蜜月| 啊v在线视频| 国内嫩模自拍偷拍视频| 国产成人a人亚洲精品无码| 国产内射XXXXX在线| 亚洲av天堂在线免费观看| 精品久久久久久久久午夜福利| 无码中文字幕色专区| 青青草手机成人自拍视频| 亚洲av无码专区国产乱码4se| 欧美人与动牲交a欧美精品| 欧美亚洲国产精品久久久久|