国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线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)點,同時,又具有桌面應(yīng)用程序靈活和易響應(yīng)性的界面,特別是對服務(wù)器端數(shù)據(jù)傳遞的良好支持,更是Ajax技術(shù)的一大亮點。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來實現(xiàn)的,這種方法的缺點是針對不同的瀏覽器需使用不同的JavaScript對象。而使用GWT開發(fā),只需簡單地調(diào)用HTTP庫和GWT中的類來實現(xiàn)即可。

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

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

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

目前,大部分的Web應(yīng)用程序都運行在各種服務(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()));

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

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

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

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

一般來說,Ajax應(yīng)用程序是不能與第三方服務(wù)器通信的,這樣的同源策略確保了不同域之間的JavaScript不會修改其他域的HTML,根據(jù)這個策略,用戶也能確定自己當(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從第三方站點站點加載RSS源就是一個很好的例子。

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

3.2 使用JSONP

利用JSOP從第三方服務(wù)器上加載結(jié)構(gòu)化的數(shù)據(jù)也是一種很好的方式。這個過程比較簡單,首先,GWT應(yīng)用程序在HTML文檔中添加一個script標(biāo)簽,瀏覽器根據(jù)這個標(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)做一個代理,將應(yīng)用程序的請求轉(zhuǎn)給第三方服務(wù)器。相對于前面兩種方式,使用HTTP代理更有利于應(yīng)用程序和服務(wù)器進(jìn)行復(fù)雜的交互。

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

對于基于HTTP的應(yīng)用程序,Web服務(wù)器會記住應(yīng)用程序的狀態(tài)。對于這種有狀態(tài)服務(wù)器,GWT應(yīng)用程序可以利用客戶端的有狀態(tài)信息來增強(qiáng)用戶體驗。此時,GWT應(yīng)用程序使用HTTP和XML庫來實現(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)程接口。此時的應(yīng)用程序可以把用戶的操作隔離在客戶端,較小的工作單元在客戶端完成,只有一次較大的事務(wù)完成后才向服務(wù)器提交請求。這種方式有利于提高應(yīng)用程序執(zhí)行效率和減少服務(wù)器的負(fù)擔(dān),擴(kuò)展了瀏覽器和服務(wù)器異步通信的能力。

GWT-RPC庫有兩個軟件包,分別是為客戶端和服務(wù)器端的RPC提供支持的com.google.gwt.user.client.rpc和com.google.gwt.user.server.rpc。其中,客戶端提供的接口用來對應(yīng)用程序中將要用于RPC的接口進(jìn)行標(biāo)記,當(dāng)GWT編譯客戶端項目時,則把這個標(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é)束語

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

參考文獻(xiàn):

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

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

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

猜你喜歡
應(yīng)用程序
刪除Win10中自帶的應(yīng)用程序
電腦報(2019年12期)2019-09-10 05:08:20
谷歌禁止加密貨幣應(yīng)用程序
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
三星電子將開設(shè)應(yīng)用程序下載商店
微軟軟件商店開始接受應(yīng)用程序
啟動后提示MOM.EXE錯誤
西宁市| 安庆市| 大厂| 建德市| 鞍山市| 井冈山市| 寿阳县| 丰宁| 土默特左旗| 江城| 衢州市| 通渭县| 嘉定区| 田阳县| 晋州市| 和林格尔县| 重庆市| 福泉市| 淳化县| 桓仁| 宜川县| 扎囊县| 灵山县| 台江县| 陆丰市| 长沙县| 阳谷县| 十堰市| 浙江省| 新闻| 林西县| 察隅县| 孝义市| 西乡县| 建阳市| 高陵县| 舞钢市| 商南县| 木里| 侯马市| 淮安市|