1.下載安裝包並安裝:
(1)登錄http://www.playframework.org/ 直接點擊Download鏈接,下載.zip文件。選擇版本play-1.4.2.zip
(2) 直接解壓該文件,獲得一個文件夾。PATH環境變量指向該文件夾。Path=D:\Programes\Play\play-1.4.2
(3)解壓後的文件夾包含一些目錄:
documentation:包括一些manual和api文檔,保證我們在離線情況下可以參考。
samples:一些常用功能的實現例子項目。
(4)驗證安裝:
使用windows + R 鍵,打開命令行,輸入play命令,得到如下界面:
play
獲取命令行幫助:
play help
2.創建項目:
在命令行界面,切換到想要創建項目的目錄,輸入命令:
play new helloworld
play new 命令在當前路徑下創建了一個helloworld目錄,其中包含一系列文件和目錄,重要的目錄和文件介紹:
app/ 包含應用核心,分爲models,controllers和views目錄。放置java代碼位置。
conf/包含應用的所有配置。application.conf應用主配置.routes定義url路由規則,messages國際化用。
public/包含所有外部可訪問的資源:js,css和image。
test/包含所有應用的測試程序。測試程序基於JUnit或Selenium。
3.運行項目:
(1)通過命令行方式進入應用的目錄(Application):
play run helloworld
打開瀏覽器鍵入http://localhost:9000 ,應用顯示了一個缺省的歡迎頁:
(2)代碼分析:
應用的主入口點配置在conf/routes文件中。它定義了應用所有可訪問的URL。第一行配置:
GET / Application.index
它告訴Play,當/路徑收到GET請求後調用Application.indexJava方法。它是controllers.Application.index的縮寫,因爲controllers包是隱式的附加的。
創建標準Java應用時,通常使用一個入口點即main方法。Play應用則有多個,一個URL一個。這些方法稱爲action方法。定義action方法的類稱爲controller。
4.使用Eclipse IDE:
(1)使用eclipsify命令將一個play應用變爲Eclipse項目。
play eclipsify helloword
在執行上命令時,先切換到hellworld項目文件夾的上一級目錄,例如我的是:
cd D:\java_workdir\play_workspace
(2)將生成的項目導入到eclipse中去(Existing Project into Workspace):
生成的項目結構如下:
(3)在生成的launchers:
在eclipse項目中,可以看到一個eclipse文件夾,這裏邊包括eclipsify命令爲我們生成的3個lanchu文件,下面逐一介紹:
a.helloworld.launch:主launch文件,執行時,相當於執行命令play run。執行方法:右鍵該文件,選擇 Run As > helloworld
b.Test helloworld.launch:相當於play test命令。執行方法:右鍵該文件,選擇 Run As > Test helloworld
c.Connect JPDA to helloworld.launch:連接Eclipse Debugger到一個已經運行的play實例,並且啓動debugging session。執行方法:右鍵該文件,選擇 Debug As > Connect JPDA to helloworld。
(4)安裝Play的Eclipse插件:
將目錄$PLAY_HOME/support/eclipse下的jar文件,拷貝到$ECLIPSE_HOME/dropins目錄。
5.使用項目:
5.1 創建表單:
修改文件:helloworld/app/views/Application/index.html:
#{extends 'main.html' /} #{set title:'Home' /} <form action="@{Application.sayHello()}" method="GET"> <input type="text" name="myName" /> <input type="submit" value="Say hello!" /> </form>
@{…}標誌觸發Application.sayHello action。由於不存在action Application.sayHello,所以會報錯。下面創建該action:
package controllers; import play.*; import play.mvc.*; import java.util.*; import models.*; public class Application extends Controller { public static void index() { render(); } public static void sayHello(String myName) { render(myName); } }
增加了sayHello方法,action方法中定義了參數myName,所以該方法的值會被傳入HTTP請求myName參數的值。如下:http://xxx?myName=xxx。
需要建相應的html文件,helloworld/app/views/Application/sayHello.html。
#{extends 'main.html' /} #{set title:'Home' /} <h1>Hello ${myName ?: 'guest'}! </h1> <a href="@{Application.index()}"> Back to Form</a>
Groovy的表達式:?: 。 如果myName參數沒有賦值的話,提供一個默認值。