1. 程式人生 > >play框架03--建立專案

play框架03--建立專案

安裝Play


從下載頁面下載最新的二進位制包,然後在你喜歡的地方解壓它。

如果你用的是Windows,最好避免在路徑中混入空格。比如c:\play就是個比c:\Documents And Settings\user\play更好的選擇。
  • 1

為了方便操作,你需要新增Play資料夾到你的系統路徑中。這樣你就不需要在play命令前面敲一大通路徑名了。要想檢查安裝是否成功,開啟一個新的命令列視窗,敲下play;應該會出來play的基本使用幫助。

建立專案


現在Play已經安好了,是時候開始寫部落格應用。建立一個Play應用非常簡單,僅需要play命令列工具。之後會生成Play應用的基本架構。

開啟一個新的命令列並敲入:

~$ play new yabe
  • 1

它會提醒輸入應用的全名。輸入yabe。 
play new命令建立了一個新的資料夾yabe/外加一系列檔案和資料夾。其中包括下面各部分:

app/ 包括應用的核心,劃分為models,controllers和views資料夾。它也可以包括其他Java的包。這是.java原始碼檔案所在之處。

conf/ 包括所有的應用配置檔案,特別是主application.conf檔案,路由定義檔案和用於國際化的資訊檔案。

lib/ 包括所有可選的Java庫,比如標準的.jar。

public/ 包括所有可以公開的資源,比如Javascript檔案,樣式表和圖片。

test/ 包括所有的應用測試。測試可以是Java的JUnit測試或者Selenium測試。

因為Play只使用UTF-8編碼,故所有的文字檔案都需要使用UTF-8編碼。確保你的文字編輯器已經做了相應的配置。
  • 1

如果你開發過Java應用,你可能會奇怪.class檔案到哪兒去了。答案是……沒有.class檔案了:Play並不使用任何class檔案;相反它直接處理Java原始碼。實際上我們使用Eclipse的編譯器來即時編譯Java原始碼 
這導致了開發過程中的兩點重要的改進。第一個,Play會自動監測Java原始碼的改變並在執行時自動過載。第二個,當一個Java異常發生時,Play能向你展示更好的錯誤報告 - 帶對應的原始碼的哦~

事實上Play在應用的tmp/資料夾下有位元組碼的快取,但只用於加速重新啟動專案的過程。如果需要,你可以用play clean清空快取。


 

執行程式

現在可以測試一下新建立的程式了。回到命令列視窗,在yabe/目錄下輸入play run命令。Play框架將載入程式,啟動Web伺服器並監聽9000埠。

開啟瀏覽器鍵入http://localhost:9000,程式顯示了一個預設的歡迎頁。

 

現在我們來看看這個頁面是怎樣顯示的。

程式的主入口配置在conf/routes檔案裡。這個檔案定義了程式所有可訪問的URL。開啟routes檔案,會看到第一個“route”:

GET / Application.index

它告訴Play,當伺服器收到來自於/路徑的GET請求時要呼叫Application.index的方法。在這個程式中,Application.index是controllers.Application.index簡寫,因為controllers包是隱式附加的。

在建立一個標準Java程式時,通常會定義一個入口方法,比如:

public static void main(String[] args) {  ... }

Play程式則有多個入口方法,每個URL就有一個。這些方法稱為action方法。定義Action方法的類稱為controller。

看看什麼是controller。開啟yabe/app/controllers/Application.java原始檔:

package controllers; import play.mvc.*; public class Application extends Controller { 	public static void index() {		render();	} }

controller 類繼承於play.mvc.Controller類,這個類提供了許多controller需要的方法,比如在index action中的render方法。

index action定義為public static void,因為controller類不需要例項化和返回值。

index action很簡單,只是呼叫了render()方法來通知Play渲染模板。使用模板是返回HTTP響應的一個最通用的方式。

模板是在/app/views 目錄下的簡單文字檔案。因為這裡沒有指定一個模板,index action會使用一個預設的模板:Application/index.html。

開啟/yabe/app/views/Application/index.html:

#{extends 'main.html' /}#{set title:'Home' /} #{welcome /}

在這個模板中,只有Play tag,與JSP tag類似,#{welcome /} tag會在瀏覽器中生成歡迎資訊。#{extends /} tag 表示這個模板繼承於main.html這個模板。模板繼承可用來建立複雜的web也並重用公共部分。

開啟/yabe/app/views/main.html模板:

<!DOCTYPE html><html>    <head>        <title>#{get 'title' /}</title>		        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>        <link rel="stylesheet" type="text/css" media="screen"             href="@{'/public/stylesheets/main.css'}" />        <link rel="shortcut icon" type="image/png"             href="@{'/public/images/favicon.png'}" />    </head>    <body>        #{doLayout /}     </body></html>

#{doLayout /}tag表示index.html插入內容的地方。

試著編輯controller類來看看Play怎麼自動載入它。開啟yabe/app/controllers/Application.java,刪除render()後的分號,讓它出錯,就像這樣:

public static void index() {    render()}

然後到瀏覽器重新整理這個頁面,Play會檢測原始檔變更並試著載入程式controller,但是因為controller有錯誤,所以在瀏覽器中顯示一個編譯錯誤。

把剛才的錯誤修改正確,在編輯模板,開啟yabe/app/views/Application/index.html覆蓋歡迎訊息。

#{extends 'main.html' /}#{set title:'Home' /} <h1>A blog will be here</h1>

在瀏覽器重新整理這個頁面。

 

配置資料庫

 


在開始寫程式碼之前還要多做一件事。作為部落格引擎,我們需要一個數據庫。為了便於與開發,Play內建了一個叫做H2的資料庫。當然如果需要,我們也可以切換到一個更加健壯的資料庫。你可以選擇設定資料時儲存在記憶體中,還是在檔案系統中(這樣即使你重新啟動,你的資料也會保留)。 
在一開始,我們將對應用模型做許多測試和改動。因此,最好選擇儲存在記憶體中,這樣每次啟動,都不會跟舊資料有任何牽連。 
開啟yabe/app/application.conf,解除這一行的註釋:

db=em
  • 1

正如你在註釋中看到的一樣,你可以冗餘的配置任何JDBC資料庫,甚至配置連結池。

現在回到瀏覽器並重新整理歡迎頁面。Play將自動啟動資料庫。檢查下面一行是否出現在應用日誌中:

INFO ~ Connected to jdbc:h2:mem:play
  • 1

補充


如果執行play run 命令出現下面提示: 
這裡寫圖片描述 
解決辦法: 
找到play\framework\build.bat 修改

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M %DEBUG_PARAM% %JAVA_OPTS% -Dfile.encoding=UTF-8 -Dinput.encoding=Cp1252 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="%fp%sbt/sbt.boot.properties" %PLAY_OPTS% -jar "%~dp0sbt\sbt-launch.jar" %*
  • 1

 
java -XX:+CMSClassUnloadingEnabled %DEBUG_PARAM% -Dfile.encoding=UTF8 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="file:///%p%sbt/sbt.boot.properties" -jar "%~dp0sbt\sbt-launch.jar" %*

 

 

 

將play專案匯入myeclipse

前提:已安裝play並配置了環境變數

第一步 :開啟你的專案將下面幾項刪除(沒有就跳過)

第二步:在cmd中來到專案的路徑下(cd,不是來到專案裡,而是專案名前一級目錄),然後輸入play eclipsify +專案名

第三步:匯入