§動作、控制器和結果
§什麼是動作?
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 路由
在此文件中發現錯誤?此頁面的原始碼可在 此處 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享?請前往 我們的社群論壇 與社群展開對話。