天天看點

GWT 入門

GWT應用程式有兩種方式運作:

Hosted Model

在Hosted Model方式下,Java程式并不會被編譯成JavaScript,GWT隻是創造了一個類似

浏覽器的環境,直接運作使用GWT開發的程式。這種模式最具生産力(這種模式下可以Debug所有的Java代碼),

是以開發環境通常使用Hosted Model,但是真正的程式執行不使用這種模式。

Web Model

就是将使用GWT編寫的Java程式整整編譯成JavaScript,在Web容器上運作,使用浏覽器

通路的模式,這種方式隻有在測試或者運作的時候才使用,每次對Java類的修改必須重新編譯

這些Java類,之後重新部署應用。是以生産力比較低。

用指令projectCreator -eclipse hello (GWT幫我們生成一個eclipse工程的基本架構);

用指令applicationCreator -eclipse hello com.wly.client.DemoApplication(gwt幫我們生成一個GWT工程所需要的所有支援檔案);

applicationCreator和projectCreator的差別是

applicationCreator建立了src目錄和Demo代碼,projectCreator不建立Demo代碼,但是建立src目錄和test目錄。

applicationCreator建立了啟動腳本GWTLogon-shell.cmd和GWT編譯腳本GWTLogon-compile.cmd,而projectCreator不建立。

applicationCreator建立了eclipse launch檔案,而projectCreator建立.classpath和.project檔案。

通常情況下,我們先使用projectCreator建立按project,projectCreator建立的工程可以輕松的import到eclipse中,

之後我們使用applicationCreator建立需要的Java示例代碼,eclipse launch檔案,啟動腳本和編譯腳本

指令清單

projectCreator

生成基本項目架構,可以選擇使用eclipse或者使用ant建構檔案

applicationCreator

生成代碼示例和一個可運作的應用程式

junitCreator

生成一個JUnit測試Case

i18nCreator

生成一個i18n屬性檔案和對應的Javascript腳本。

benchmarkViewer

顯示benchmark結果

功能介紹(遠過程調用RPC)

體系結構

GWT應用中頁面一旦加載,就再也不會向伺服器請求HTML内容,所有的畫面遷移,轉換都在用戶端進行,但是資料還是會向伺服器送出,或者從伺服器擷取。

伺服器上負責處理資料的對象在GWT中叫做Service,每個Service有三個類組成:服務方法定義接口(Service),異步調用接口(ServiceAsync)和伺服器方法實作類ServiceImpl。

以Login為例子說明:

// 服務方法定義接口

public interface LoginService extends RemoteService {

public boolean login(LoginSO login) throws ApplicationException;

}

// 異步調用接口

public interface LoginServiceAsync {

void login(LoginSO login, AsyncCallback async);

}

// 伺服器方法實作類

public class LoginServiceImpl extends RemoteServiceServlet implements LoginService {

public boolean login(LoginSO login) throws ApplicationException {

...

return true;

}

}

其中前兩個接口在client包内部,最後一個實作在server包内部。

繼續閱讀