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包内部。