Documentation

You are viewing the documentation for the 2.2.0 release in the 2.2.x series of releases. The latest stable release series is 2.4.x.

§アクション、コントローラ、レスポンス

§アクションとは?

Play アプリケーションが受け取ったリクエストのほとんどは、Action によって処理されます。

アクションは基本的にはリクエストを処理しクライアントへ送るレスポンスを生成する Java のメソッドです。

public static Result index() {
    return ok("Got request " + request() + "!");
}

アクションは play.mvc.Result 型の値を返し、これはクライアントへ送信される HTTP レスポンスを表しています。上記の例では、ok は コンテントタイプ text/plain のレスポンスボディを含む、ステータス 200 OK のレスポンスを生成します。

§コントローラ

コントローラは複数のアクションメソッドをまとめて play.mvc.Controller を継承しただけのクラスです。

package controllers;

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

public class Application extends Controller {

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

}

アクションを定義する最も簡単な構文は、上記したように Result 型の型を返す引数無しの static メソッドを定義するというものです。

アクションメソッドは引数を取る事も出来ます。

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

これらの引数は Router により解決され、リクエスト URL から値が入れられます。引数の値は URL のパスもしくは URL のクエリ文字列から抽出することができます。

§Results

簡単な Result から始めてみましょう。ステータスコード、 HTTP ヘッダ、そしてボディがクライアントに送信されるというものです。

これらの結果は play.mvc.Result で定義されていて、そして play.mvc.Results クラスは、前のセクションで使用した ok メソッドのような標準的な HTTP の結果を返すためのいくつかのヘルパーを提供します。

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

Result を作成する例をいくつかご紹介します。

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 クラスで定義されています。

§リダイレクトもただの Result です

ブラウザを新しい URL へリダイレクトさせることも、ただの Result の一種です。違うのは、リダイレクトの Result はレスポンスボディを取らないということです。

リダイレクトを生成するヘルパーもいくつか用意されています。

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

デフォルトでは、 303 SEE_OTHER のステータスコードが使われていますが、別のステータスコードを指定する事もできます。

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

次ページ: HTTP ルーティング