§實作 Hello World
為了了解使用 Play 有多麼簡單,我們將為這個教學應用程式新增一個自訂的 "Hello World"
問候語。
主要步驟包括
- 建立 Hello World 頁面
- 新增動作方法
- 定義路由
- 自訂問候語
§1. 建立 Hello World 頁面
請依照下列說明為這個專案新增一個 Hello World 頁面。
使用任何文字編輯器,建立一個名為 hello.scala.html
的檔案,並將其儲存在這個專案的 app/views
目錄中。將下列內容新增到檔案中
@()
@main("Hello") {
<section id="top">
<div class="wrapper">
<h1>Hello World</h1>
</div>
</section>
}
這個 Twirl 和 HTML 標記會執行下列動作
@
符號告訴範本引擎要詮釋後面的內容。- 在此情況下,
@main("Hello")
會呼叫主範本main.scala.html
,並傳遞頁面標題"Hello"
給它。 - 內容區段包含
Hello World
問候語。主範本會將此插入頁面的主體。
現在我們準備新增一個動作方法,用來呈現新頁面。
§2. 新增動作方法
為新頁面新增動作方法
開啟 app/controllers/HomeController.java
(或 .scala
) 檔案。在教學方法下方且在結束大括號之前,新增下列方法
- Java
-
public Result hello() { return ok(views.html.hello.render()); }
- Scala
-
def hello = Action { Ok(views.html.hello()) }
當瀏覽器要求 hello
頁面時,要讓 Play 呼叫新的動作方法,我們需要新增一個路由,將頁面對應到方法。
§3. 定義路由
為新的 Hello 頁面定義路由
開啟 conf/routes
檔案,並新增下列行
GET /hello controllers.HomeController.hello
當您將路由新增到 routes
檔案時,Play 的路由編譯器會自動產生一個路由器類別,使用控制器實例呼叫該動作。如需更多資訊,請參閱 路由文件。預設情況下,控制器實例是使用相依性注入建立的(請參閱 Java 和 Scala 文件)。
現在您可以測試新頁面了。如果您因為某些原因而停止應用程式,請使用 sbt run
指令重新啟動它。
輸入網址 https://127.0.0.1:9000/hello 來檢視您的工作成果。瀏覽器應會回應類似下列內容
§4. 自訂問候語
作為本教學課程的最後一部分,我們將修改 hello 頁面以接受 HTTP 請求參數。這些步驟包含一個故意的錯誤,用於展示 Play 如何提供有用的回饋。
若要自訂 Hello World 問候語,請遵循下列說明。
在 app/controllers/HomeController.java
(或 .scala
) 檔案中,修改 hello
動作方法以使用下列程式碼接受名稱參數
- Java
-
public Result hello(String name) { return ok(views.html.hello.render()); }
- Scala
-
def hello(name: String) = Action { Ok(views.html.hello()) }
在 conf/routes
檔案中,在 hello
的結尾新增一個 (name: String)
參數
GET /hello controllers.HomeController.hello(name: String)
在 Twirl 範本中,所有變數及其類型都必須宣告。在 app/views/hello.scala.html
檔案中
- 在檔案頂端插入一新行。
- 在該行中,新增一個宣告名稱參數及其類型的 @ 指令:
@(name: String)
- 若要在頁面上使用變數,請將
<h2>
標題中的文字從Hello World!
變更為<h2>Hello @name!</h2>
。
最終結果將會是
@(name: String)
@main("Hello") {
<section id="top">
<div class="wrapper">
<h1>Hello, @name</h1>
</div>
</section>
}
在瀏覽器中,輸入下列 URL 並將任何名稱作為查詢參數傳遞給 hello 方法:https://127.0.0.1:9000/hello?name=MyName。Play 會回應一個有用的編譯錯誤,讓您知道回傳值中的 render 方法需要一個型態參數
若要修正編譯錯誤,請修改 HomeController
中的 hello
動作方法,以便在呈現檢視時包含 name
參數
- Java
-
public Result hello(String name) { return ok(views.html.hello.render(name)); }
- Scala
-
def hello(name: String) = Action { Ok(views.html.hello(name)) }
儲存檔案並重新整理瀏覽器。頁面應顯示類似下列的自訂問候語
§摘要
感謝您試用我們的教學課程。您已學會如何使用動作方法、路由、Twirl 範本和輸入參數來建立自訂的 Hello World 問候語!您已體驗到範本編譯如何讓您更容易找出並修正問題,以及自動重新載入如何節省時間。
這只是一個讓您入門的簡單範例。現在讓我們看看社群的其他官方範例和教學課程。
下一步:播放教學課程
在此文件發現錯誤?此頁面的原始程式碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。