使用GWT構建系統portal

做Web的前臺顯示一直是我比較頭疼的東西,HTML、CSS、Javascript都不是不是特別熟悉,雖然以前做過一個購物網站,前臺通過HTML table來佈局,界面做的真是慘絕人寰,所以一直有點懼怕。項目需要有一個portal,雖然我目前工作不是這塊,但是還是抱着學習的想法做了起來。EXT、FLEX、JavaFX、GWT等待很多框架,到底選擇哪個確實挺難忘人的,因爲項目時間並不是很充裕所以還是選了一個相對自己感覺比較容易的GWT,主要有以下原因:第一,GWT是google出品,品質上應該有一定的保證(我是 google fan);第二,它的文檔很齊全,有什麼問題很容易解決;第三,它是通過Java語言來構建的,我對Java最熟悉。所以選擇了GWT,哦,還有一個就是項目並不要求漂亮的界面,但要看着大方實用,所以GWT還是很有用的。

接下來說說,我是怎麼開始構建項目的portal的,主要從以下幾個方面說起

第一,開發環境的構建

第二,具體GWT項目如何開發

第三,代碼結構如何組織

第四,需要注意的幾點問題

 

第一,開發環境的構建

MyEclipse7.1 + GWT1.6 for win + google plugin for eclipse 

下載GWT1.6後,解壓,GWT的安裝就算完成

通過Google plugin官網上的指導安裝該插件之後,在window-prefrence裏修改google項目裏的gwt的根目錄。

開發環境構建完成,你可以根據google的getstarted完成這部分內容。

 

第二,具體GWT項目如何開發

這部分我是通過看google給的showcase學習的,上面有各種控件的使用方法,你想要使用哪個修改一下就可以用的。但前提是你必須瞭解GWT的基本概念。GWT界面部分的構建全部通過Java語言,形式很像Swing,但比Swing簡單,寫好的Java代碼,GWT幫你編譯成爲Javascript代碼,並做優化,生成之後js代碼,可以遷移到其他的Servlet容器中運行(GWT的測試平臺使用的jetty),這些都是前臺部分。

GWT與Server端的交互通過RPC的方式進行,需要在客戶端定義好調用接口,回調函數,再在服務端定義好該RPC的實現方式。因爲GWT基於Java,所以它的交互方式底層還是基於Servlet的,這就需要爲每一個RPC配置一個<servlet>標籤,在web.xml文件中。注意:在這裏所說的客戶端可以認爲就是用戶的瀏覽器,服務端就是你的servlet服務器。因爲客戶端的所有代碼都會編譯成爲Javascript代碼在用戶的瀏覽器中運行,所以注意你的客戶端所使用到的類是很有限的(至少GWT默認的是很少,或許你可以自己擴展,但是一般情況下都是夠用的),比如Thread類不能使用,還有注意,所有用戶自定義的類(一般是用來存儲信息的)都需要實現serializible接口,爲了實現傳輸。

 

我的項目並不是使用google的plugin構建的,而是使用GWT自帶的webappcrator工具創建的,注意在構建的時候選擇好你的項目名稱,因爲生成之後的包都是以這個名稱命名的。

自動生成的*.gwt.xml文件一般不需要修改(我沒有,目前還沒有使用到),在該文件中主要定義了整個程序的入口類。

還有自動生成的***.html,*代表你的項目名稱,該文件就是用戶直接訪問的頁面,我沒有再新建其他文件,所有的界面都是內嵌在這個頁面中完成。還有項目.css這個文件中,可以定義你的界面中各個控件想使用的顯示屬性,都可以使用css代碼指定(上面說了CSS我是不會,我只是簡單指定了一下絕對位置等)

 

第三,代碼組織

形成一個清晰的代碼組織結構對於項目開始很有用,讓人一目瞭然,哪個包是負責什麼的。

爲了調試方便,我的客戶端代碼和服務端代碼都是在一個工程中(通過設定項目依賴,可以分開在多個工程中),所有客戶端描繪界面的代碼都組織在*.*.web.client包中,與遠程交互的代碼在web.client.service中,該包中都是藉口,還有其他的一些工具類都放在web.client.util中,注意這些類都只是在用戶的瀏覽器中運行。

所有的實際的邏輯代碼都在web.server中,針對每個service都有一個實現。

 

第四,需要注意的問題

前面已經陸續說到了

注意客戶端只是在瀏覽器中運行的Javascript代碼;

對於每個RPC調用都要編寫web.xml中的servlet標籤;

有些類不能在client端代碼中使用;

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章