1. 程式人生 > >PLAY2.0框架快速入門

PLAY2.0框架快速入門

前言

  目前,Ruby on Rails及Grails等動態指令碼語言正發展得如火如荼,而在以Java為首的開源最大陣營中,也出現了各種框架。其中最著名的就是Play框架(http://www.playframework.org/download)。

  Play 框架是一個完整的 Web 應用開發框架,覆蓋了 Web 應用開發的各個方面。它借鑑了流行的 Ruby on Rails 和 Grails 等框架,又有自己獨有的優勢。具體表現在以下幾個方面:其一,通過 Play 框架提供的命令列工具,可以快速建立Java Web 應用。其二,它擁有Java 程式碼動態編譯機制,在修改程式碼之後,不需要重啟伺服器就可以直接看到修改之後的結果。其三,它還使用 JPA 規範來完成領域物件的持久化,可以很方便的使用不同的關係資料庫作為後臺儲存。其四,它使用 Groovy 作為檢視層模板使用的表示式語言。模板之間的繼承機制避免了重複的程式碼。總的來說,Play 框架非常適合快速建立Web 應用開發。本文將為有一定Java Web框架基礎的讀者,來重點介紹如何使用play框架來編制一個最簡單的資訊增刪改查應用。

  一:安裝Play框架

  安裝play框架前,只需要使用JDK 1.6以上的版本即可,將官網上的play框架下載後解壓到某個指定目錄下(假設為E:\paly-2.0),
    配置系統環境變數:Path中增加 E:\paly-2.0
    使用的是eclipse開發工具即可

  二:開始使用PLAY框架

  PLAY框架為能讓使用者快速開始搭建play系統的原型。下面是使用play中建立工程的步驟:
    1.Win+R,輸入cmd,開啟CMD控制檯
    2.切換到要建立工程的目錄下,輸入play new PlayTest開始建立PlayTest工程
    

 

    3.出現詢問工程名字,本例輸入PlayTest  (自定義),回車繼續,出現選擇工程型別選擇,這裡選擇2——java 工程(以後可以修改),回車,工程建立完成。


 (play new Pal,其中new表示新建應用,new後的名稱則為應用的名稱。)


  三:配置應用 將框架工程匯入eclipse

  我們為了要在eclipse中方便我們的編碼,所以需要把play剛為我們建立好的框架工程匯入到我們的eclipse中去,所以我們按如下步驟去做:

  1 使用CTRL-C,先把我們正在執行的應用停止下來。

  2 切換到剛建立的工程(PlayTest)目錄下,輸入play eclipsify,表示要生成能匯入eclipse的框架工程,回車等待程式執行完畢。


        3.啟動eclipse ,然後使用匯入工程的方法,把PlayTest工程匯入。


        4. Play分為開發模式和生產模式兩種,而切換的配置在工程下conf/application.conf中: 

         Application.mode=dev 生產模式改為:prod 

    主要區別在於開發模式中您無需重啟server,每次請求都會檢視是否有檔案發生改變,改變即編譯,這對於傳統Java EE開發人員無疑是相當敏捷的。而這種方式同樣會導致效能下降,所以生產模式中就不會這樣了,而是採用預編譯機制。 

    四:啟動Play,執行該工程

        開啟CMD控制檯,用cd命令切換到該工程目錄下,輸入paly run 等待服務啟動,然後在瀏覽器中輸入http://localhost:9000/

        即可訪問剛剛新建的工程,預設首頁為play的歡迎頁面。

------------------------------------------------------------------------------------------------------------------------

       4.在這個例子中,用的只是HSQL,所以開啟conf/application.conf檔案,將下面的db=mem 語句前的註釋符號去掉,表示我們將使用hsql。

  5.同樣,在conf/application.conf檔案中,增加如下這行,表示我們將使用play框架自帶的CRUD功能:
module.crud=${play.path}/modules/crud

  6.在conf/routes檔案中,增加如下這行:
*/admin module:crud

  注意,在play框架中,routes是路由控制器,這行表示,將所有的CRUD操作都是隻有通過 */admin訪問的請求,才能實現play自帶的CRUD功能。

  7.在進行上述修改後,我們再到命令列方式下,執行play eclipse,然後再到ECLIPSE下按F5重新整理一下

  8.如果此時再使用play run,執行會發現暫時還沒有更新,因為我們要進行資料層的配置。

  五:建立員工實體物件和控制層

  Play框架完全遵守MVC分層架構標準,因此我們按照MVC的分層來設計我們的引用。我們先建立員工實體物件和其控制層。

  首先,在eclipse的corporations工程中,在app/models目錄下,新建Employee類,程式碼如下: 

    Package models;
  import java.util.Date;
  import javax.persistence.*;
  import play.db.jpa.Model;
  @Entity
  public class Employee extends Model {
  public String fullName;
  public Integer salary;
  public Date dateOfHire;

  在Play框架中,預設使用的是jpa註解標準,使用@Entity註解,說明該類是屬於實體類,這裡都是繼承了play自己的模型層基類Model,這裡由於是示例,只是列出了三個物件的屬性。

  接下來,在app/controllers中,建立員工類的控制層檔案,程式碼如下 

   package controllers;
  public class Employees extends CRUD{ // an empty class
   }

  這裡看到,控制層檔案的命名是Employees,使用的是PLAY框架優先約定的命名規則:實體類的複數形式。並且這裡繼承了Play中自帶的CRUD基類的功能,這樣,就可以在我們的應用中輕易使用到PLAY自帶的CRUD功能了。

  現在我們馬上來執行下應用,依然輸入play run,再在瀏覽器中輸入:


  這個時候,點Add按鈕,就可以增加員工了。

  六:建立部門實體類和部門控制層

  接下來,我們繼續建立部門實體類和部門控制層的檔案。同樣,在app/models目錄下,新建立Department類,如下:  

  package models;
  import javax.persistence.*;  import play.db.jpa.Model;  @Entity  public class Department extends Model {  public String name;  public String description; }
  同樣在app/controllers目錄下,建立控制層檔案Departments,程式碼如下:
  package controllers;
  public class Departments extends CRUD {
   }

  這個時候,再次執行play run,會發現使用http://localhost:9000/admin時,看到的介面將會比之前的多了能夠增加部門實體類,大家可以嘗試下。

  七:建立部門跟員工之間的連線關係

  現在我們在建立了部門類和員工類後,可以開始建立它們之間的關聯關係了。由於一個部門中是有多個員工,所以在員工類employee中,寫入如下程式碼,建立兩個類之間的關聯: 

   @ManyToOne
  public Department department;

  這裡依然使用了@ManyToOne的JPA註解去實現多對一的關係。在再次執行程式後,會發現,在增加員工時,會出現下拉選單選擇框,讓其選擇該員工屬於哪一個部門。

  八:建立公司實體類和控制類

  最後,我們建立公司實體類和控制類。同樣,在app/models目錄下,建立Company類如下:

    package models;
  import javax.persistence.Entity;
  import play.db.jpa.Model;
  @Entity
  public class Company extends Model {
    public String name;
    public String address;
    public boolean isPublic;
   }

  company的控制層類程式碼如下:
    package controllers;
  import models.Company;
  @CRUD.For(Company.class)
  public class Companies extends CRUD{
   }

  這裡要提醒一點的是,由於company的複數是companies,而play框架原先約定俗成的是在實體類名後直接加字母s,所以這裡使用了註解 @CRUD.For(Company.class),以表明該控制類檔案Companies是為company實體類服務的。

  同樣,一個公司裡有許多部門,因此在Deparment部門類中,建立如下的多對一關係: 

    @ManyToOne
  public Company company;

  再次執行程式,可以看到,現在三個實體類都建立起來了,可以分別對公司,部門和員工進行CRUD操作

  九:優化列表

  我們在檢視每個實體類的列表時,發現在列表中,會把每條記錄的id都顯示出來,這個在程式中假設不需要看到id欄位的話,可以通過修改程式碼實現,比如在Company類中,增加toString方法即可:

  public String toString() {
  return name;

  而在Department和Employee類中,可以採用同樣的方法,以不顯示它們的id欄位。

  十:增加校驗規則

  在輸入資料時,校驗規則是必不可少的,在play框架中,可以很方便地使用註解來增加校驗規則,比如在員工類中,可以要求輸入的fullName欄位內容不能超過100個字元,而且fullName欄位不能為空,則在Employee類中,增加如下程式碼即可: 

@Required @MaxSize(100) public String fullName;

下面列出一些常見的校驗規則:
  @Email 校驗email合法性
  @InFuture 檢驗是否將來的日期
  @InPast 檢驗是否是過往的日期
  @Match 對正則表示式的判斷
  @Max 最大值
  @Min 最小值
  @Range 檢驗範圍
  @URL 檢驗是否URL

  十一:改變列表的顯示格式

  在預設情況下,比如檢視employee列表,只能看到employee的名稱欄位,假設要在列表中看到每條記錄的每個欄位的話,要修改下play的模版,方法如下:

  1 停止現在的服務,CTRL-C停止。

  2 在命令列下,輸入:

  play crud:ov template Employees/list


  這將在app/views/Employees目錄下新建立一個list.html的頁面。

  3 重新輸入play run,並切換到eclipse中的專案中,按F5更新頁面。

  4 在eclipse中,開啟app/views/Employees/list.html,這個是僱員列表的模版檔案。

  5 在該頁中,找到id=”crudListTable”部分,修改為:

 #{crud.table fields:[fullName, dateOfHire, salary] /}

  即顯示完整所有欄位。

  6 重新執行程式,即可看到效果,如下圖,可以看到,能看到所有欄位值。

  十二:改變列表中標題的顯示

  在預設狀態下,列表中顯示的欄位標題是用實體類中的名稱的,假如想把fullName修改位Full Name的話,可以在conf/messages下,增加:

  fullName=Full Name

  即可,如下圖顯示:

  小結

  在本文中,我們學習瞭如何使用Play框架的腳手架功能,快速搭建CRUD的應用原型。Play框架的配置方法簡化了工作程式碼量。目前Play框架正在不斷的完善中,讀者可以根據本教程的指引實際操作後,進一步閱讀官方文件加以深入學習。參考文章:http://www.playframework.org/documentation/1.2.2/evolutions

-------------

整理自網路