好吧,Eclipse已經有了Vaadin的環境,現在正式來搞GAE/J
從這邊開始
https://developers.google.com/eclipse/docs/getting_started
就全部勾選安裝吧!
需要一點時間,喝茶去!
裝完重新打開又要安裝Android SDK,繼續吧!
又要安裝Build工具,繼續吧!
以上的步驟真多,其實,最快的方式是直接打開書附光碟的環境。
在安裝的同時,來看看GAE的申請吧!
書上說,先到這邊申請
https://appengine.google.com/
原來我之前申請過,只要登入google之後,就會直接跳到我的
GAE管理介面,
現在來申請一個新的站台,
這邊可以看到所有的專案
https://console.developers.google.com/project
今天是150804,就用這個當專案名,
google會自動幫我產生專案ID,
根據書上,這個ID需要記下來,用來填入
appengine-web.xml中的application標籤
這時都下載完了,來新增一個GAE專案,
填入專案名跟package名,我是直接打com.加上專案名
並且勾選自動產生範例程式碼
所以在專案管理員產生了我的專案,下面有src, test, war三個資料夾
網頁相關的檔案會放在這裡,也就是經過GWT編譯過的東西
跟著書上做,開啟run as或是debug as,自動編譯,開啟連結一直鬼打牆要我安裝
plugin
GWT Development Mode will no longer be available for Chrome sometime in 2014, so we improved alternate ways of debugging. There are improvements to Super Dev Mode, asserts, console logging, and error messages.
原來要開啟super dev模式,再來一次,done,但是classic dev模式好像不管用
接下來對src裡面的檔案分析
log是日誌檔,META-INF裡面的跟JDO有關,server包裡面是伺服器類別,client裡面是前端類別,
GAE並不限制只能跑GWT產生的東西,傳統Servlet跟JSP都可以跑,來試試
Servlet
需要繼承HttpServlet,改寫doGet及doPost,建立網址與類別對應
展開專案src,在模組定義檔新增一個class,在Name填入Servlet名稱,superclass用選的,旁邊的Browse點下去,過濾器用httpservlet,有3個結果,挑最上面那個
自動產生一個類別,改寫get和do方法
將游標放到類別的程式碼中(兩個大括弧中間),這時候右鍵有選單可以用,Source -> Override啥的,進去就可以看到一堆方法,來改吧!
點完doget就會自動加入方法的碼,書中說要把super那一行刪除(windows快速鍵Ctrl+D,mac就用command+d),填入自己的碼
用resp.getWriter傳回給一個新定義的PrintWriter,然後用print方法輸出資料
接下來建立對應,在war裡面找到web.xml,其中的web-app標籤就是要加東西的地方,
要新增新的servlet與mapping,可以複製預設的加以修改
不外就是修改servlet-name, servlet-class, url-pattern
這種對應方式好像MVC框架都會這樣做
接下來試試JSP
因為網頁資料全部都用print的話,在class裡面寫會很累,所以,把Java code放到html裡面就是JSP
書上本來說要把jdk裝起來,還有把jsp改成utf-8編碼,不過我的環境都已經是了。
在war裡面新增一個jsp檔案,在body裡面放一個form及相關的java code,這個改動的影響是即時的,所以不需要重新編譯(因為編譯只是生成javascript,用jsp應該是及時編譯)
接下來先跳到12章,部署的部分,通常整個專案完成後才需要真正部署到雲上,開發時多在本地編譯與測試
回到剛剛的web.xml,除了servlet的mapping外,也可以設定security-constraint與filer,建立安全限制與過濾機制,
另外可以新增一個dos.xml,建立blacklistentries,用以阻擋特定IP的流量
至於真正跟部署有關的是appengine-web.xml,把前面申請的專案ID填入
application這個標籤,version是指部署時上傳的專案版本,此值可任意設定,以進行多版本管理,static-files是指要設定為靜態的檔案類型,如圖檔等,這些內容會放在cache等地方,以加快速度,**代表該目錄所有子資料夾,另外啟用ssl的標籤是ssl-enabled,啟用session是session-enabled。
設定好需要的標籤後,專案右鍵Google -> Deploy to App Engine,接著授權eclipse登入,點擊部署,等待GWT慢慢的編譯吧!
上傳成功,管理介面也有,首頁也打得開,但是有一點怪怪,點擊按鈕出錯,jsp, servlet跑不出來
下班,明天再處理
今天來處理上傳不能執行的問題,拜谷歌大神後,不太好找,可能是環境太特殊,最後看管理介面,感覺是版本的問題,因為出現
java.lang.UnsupportedClassVersionError: org/apache/jsp/NewFile_jsp : Unsupported major.minor version 52.0
谷歌說,52.0是JDK8之後的版本,於是把JDK7裝起來修改設定,開一個新專案,重新上傳,這樣就正常了,另外發現如果自行加jsp檔案也會不能跑,果然google限制比較多。
沒有留言:
張貼留言