文件

§動作、控制器和結果

§什麼是動作?

Play 應用程式接收到的多數要求是由動作處理的。

動作基本上是一個 Java 方法,用於處理要求參數,並產生要傳送給客戶端的結果。

public Result index(Http.Request request) {
  return ok("Got request " + request + "!");
}

動作會傳回 play.mvc.Result 值,代表要傳送給網路用戶端的 HTTP 回應。在此範例中,ok 會建構一個包含 text/plain 回應主體的 200 OK 回應。如需更多 HTTP 回應範例,請參閱 play.mvc.Results 方法

§控制器

控制器只不過是延伸 play.mvc.Controller 的類別,會將多個動作方法分組。

package controllers;

import play.*;
import play.mvc.*;

public class Application extends Controller {

  public Result index() {
    return ok("It works!");
  }
}

定義動作最簡單的語法是沒有參數且會傳回 Result 值的方法,如上所示。

動作方法也可以有參數

public Result index(String name) {
  return ok("Hello " + name);
}

這些參數會由 Router 解析,並會填入來自請求 URL 的值。參數值可以從 URL 路徑或 URL 查詢字串中擷取。

§結果

讓我們從簡單的結果開始:具有狀態碼、一組 HTTP 標頭和要傳送到網路用戶端的主體的 HTTP 結果。

這些結果由 play.mvc.Result 定義,而 play.mvc.Results 類別提供多個輔助程式來產生標準 HTTP 結果,例如我們在前一節中使用的 ok 方法

public Result index() {
  return ok("Hello world!");
}

以下是建立各種結果的幾個範例

Result ok = ok("Hello world!");
Result notFound = notFound();
Result pageNotFound = notFound("<h1>Page not found</h1>").as("text/html");
Result badRequest = badRequest(views.html.form.render(formWithErrors));
Result oops = internalServerError("Oops");
Result anyStatus = status(488, "Strange response type");

所有這些輔助程式都可以在 play.mvc.Results 類別中找到。

§重新導向也是簡單的結果

將瀏覽器重新導向到新 URL 只是另一種簡單的結果。但是,這些結果類型沒有回應主體。

有幾個輔助程式可用於建立重新導向結果

public Result index() {
  return redirect("/user/home");
}

預設會使用 303 SEE_OTHER 回應類型,但您也可以指定更明確的狀態碼

public Result index() {
  return temporaryRedirect("/user/home");
}

下一步:HTTP 路由


在此文件中發現錯誤?此頁面的原始碼可在 此處 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?請前往 我們的社群論壇 與社群展開對話。