iT邦幫忙

DAY 23
2

Cloud Foundry 雲端應用開發實戰系列 第 23

Cloud Foundry 雲端應用開發實戰(23/30)快速建立 CRUD 操作

Cloud Foundry 是開放源碼的 PaaS 解決方案,支援多種程式語言、開發框架及資料庫等服務,而且更容易開發、測試及佈署。本系列文章將從零開始,和學習者一起開啟雲端應用程式開發的大門。

使用 Grails 快速建立專案的 CRUD 基本操作介面與功能。
延續使用前一節建立的「myfirstgrails」專案,我們先為這個專案新增一點基本操作功能,使用 Grails 的指令來快速增加 CRUD(Create, read, update and delete)操作介面,。

如果已經啟動測試伺服器,需要先以 Ctrl + C 將它關閉。增加 CRUD 的第一個步驟是建立 MVC 架構中的 Model,在 Grails 框架中 Model 稱為 Domain Class,在建立新的 Domain Class 時,如果測試伺服器仍在運作,會造成已執行的無法正常運作(需要重新啟動伺服器才能解決)、資料庫處理異常。一般來說,我們會在停止測試伺服器的狀態下,才進行 Domain Class 的新增與修改。

先切換到專案的資料夾下,所有 Grails 對專案進行的操作都需要在專案的主目錄下執行:

::

cd myfirstgrails

然後使用 create-domain-class 增加「Post」的 Model 定義類別。

::

grails create-domain-class post

上述動作實際會建立一個「myfirstgrails.Post」的類別,儲存成 grails-app/domain/myfirstgrails/Post.groovy 這個檔案。

我們直接修改 Post.groovy,增加 title 及 content 兩個物件屬性。Grails 會在資料庫中新建 post 資料表,並設定 title 及 content 兩個對應的欄位。

::

package myfirstgrails

class Post {

String title;
String content;

static constraints = {
}
}

接下來我們利用 Grails 的「Scaffold」功能,來建立一個提供 Post 用於 CRUD 操作的 Controller。

::

grails create-scaffold-controller myfirstgrails.Post

這個操作會新增 PostController 類別,儲存成 grails-app/controllers/myfirstgrails/PostController.groovy 檔案。

這兩個步驟就完成最基本的 CRUD 介面建立,我們再次啟動測試伺服器,利用瀏覽器檢視功能操作。

::

grails run-app

伺服器啟動後以瀏覽器開啟「http://localhost:8080/myfirstgrails/post/」,如果執行順利,可以看到 Grails 使用 Scaffold 功能產生的 CRUD 操作介面,可以新增(New Post 按鈕)、修改及刪除資料,其表單欄位也包含我們所設定的 title 及 content。

先以 Ctrl + C 終止伺服器,再繼續以下的步驟。

在確認 Domain Class 已經包含所需的欄位後,我們就可以利用 generate-all 指令建立真正包含程式碼的 Controller 及 View。使用 create-scaffold-controller 建立的 Controller 僅提供 static scaffold = true 一行設定,這是因為 Domain Class 還在頻繁修改的階段時,還不適合產生所需的相關程式碼。雖然有時候 Scaffold 提供的功能就已足夠使用,但是在程式正式發佈為「production」版本時,基於安全因素的考量,預設不會提供 Scaffold 功能給正式網站。

利用 generate-all 指令,自動產生 Controller 及 View 的 CRUD 相關程式碼。過程中會詢問是否要覆蓋掉舊程式,輸入 y 或 a 即可。

::

grails generate-all myfirstgrails.Post

再次啟動測試伺服器,可以測試 Post 的 CRUD 功能。這時候可以直接修改 Controller 及 View 的相關功能,用瀏覽器的重新整理就可以看到結果。除了修改 Domain Class 外,一般對 Controller 及 View 的異動並不需要重新啟動測試伺服器。


上一篇
Cloud Foundry 雲端應用開發實戰(22/30)Grails 開發環境建置
下一篇
Cloud Foundry 雲端應用開發實戰(24/30)安裝 Cloud Foundry Integration
系列文
Cloud Foundry 雲端應用開發實戰31

2 則留言

0
ted99tw
iT邦研究生 1 級 ‧ 4 年前

沙發
筆記

0
Albert
iT邦高手 1 級 ‧ 4 年前

lyhcode提到:
CRUD

快速建立 CRUD 之後 ?

列印單據 依據單據內容分類 自動切換列印樣式 ??????

快速建立 CRUD 之後 ?

欄位間驗正規則, Table/物件 : 間驗證規則 ?

我要留言

立即登入留言