新建Play!項目

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

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

  一、安裝Play框架

  安裝play框架前,只需要使用JDK 1.5以上的版本即可,將官網上的play框架下載後解壓到某個指定目錄下,使用的是eclipse開發工具即可。在本文中,將介紹的例子,是一個關於公司、部門、員工之間的CRUD操作,其關係爲:一個公司有很多部門,一個部門有很多個員工。

  二、開始使用PLAY框架的腳手架功能

  PLAY框架爲能讓用戶快速開始搭建play系統的原型。下面是使用play中腳手架功能的步驟:

  1.   在命令行方式下,轉到play框架的安裝目錄,本文假設爲c:\play下。
  2.   假設我們的應用的名稱爲corporations,則在play中,新建立一個應用只需要用如下命令即可:  play new corporations,其中new表示新建應用,new後的名稱則爲應用的名稱。
  3.   在輸入上面的語句後,會提示輸入確認系統的名字,這裏輸入corporations,按回車確認即可。
  4.   我們使用cd corporations目錄中,會發現已經有play自帶的框架的內容了。我們可以在命令行方式下,執行play run,這時play就會啓動自帶的jetty服務器,將應用啓動起來。
  5.    在啓動後,可以通過瀏覽器瀏覽剛纔新建的應用了,方法是http://localhost:9000,就可以看到一個默認的play應用,其中顯示的首頁中,簡單指導了一些簡單的配置方法。如下圖:

  三、配置應用 將框架工程導入eclipse

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

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

  2 依然在corporations目錄下,輸入play eclipse,表示要生成能導入eclipse的框架工程。

  3 再啓動eclipse ,然後使用導入工程的方法,把corporations工程導入。

  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,再在瀏覽器中輸入:

  http://localhost:9000/admin即可看到如下的效果:

  這個時候,點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(100public 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


轉載http://tech.it168.com/a2011/1107/1269/000001269990_all.shtml

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