![Lv.1 PlayフレームワークのControllersとResults [play framework2.0][java]](https://soylatte.jp/wp-content/themes/soy-magazine/assets/images/no-thumbnail.png)
Playフレームワークにとってのつばさ君とみさき君(?)
それがControllersとResults。
理解のためには、Controllersはサーブレット、ResultsはHTTPResponseと
捉えてもいいかも。あくまで位置づけが、ということですが。
ControllersとResultsについて。
Controllersとは
play.mvc.Controllerを継承したクラスのことで、サーブレット的なポジション。
このクラスの中で定義されるメソッドが、Actionと呼ばれる。
Actionとは、リクエストを処理するメソッドの名前。
Controllerクラス内に書かれたpublic staticなメソッドがActionとなる。
単にそう呼んでるだけで、strutsとかのActionとはちょっと違う。
あっちはクラス、こっちはメソッド。※1
Action(メソッド)は、引数も取れる。
public static Result index(String name) {
return ok(“Hello” + name);
}
[/java]
引数は、
クライアントからは、URLのパスで指定したり、クエリで指定する。
サーバーでは、パスやクエリをRouterというクラスが解釈してくれる。
Resultsとは
play.mvc.Result(s)は、HTTP resultのこと。HTTPヘッダーとBody情報を
クライアントに返すためのクラス。
Actionの戻り値として活躍する。
いろいろある。
[java light=true]
//303 SEE_OTHERのこと
public static Result index() {
return redirect(“/user/home”);
}
[/java]
303は、もうここにはコンテンツはないから、こっちに移動してね、という
恒久的なニュアンスが強いリダイレクト。
[java light=true]
// 302(か307)のこと
public static Result index() {
return temporaryRedirect(“/user/home”);
}[/java]
302(307)は一時的に別のURLにリダイレクトさせるけど、そのうち元に
戻すよ、という意味合いが強い。
// いわゆる200
Result ok = ok(“Hello world!”);
// 見つかりませんでした
Result notFound = notFound();
// ページがありません。
Result pageNotFound
= notFound(“
Page not found
“).as(“text/html”);
// バリデーションの結果を返している。
// バリデーション失敗時の処理。
Result badRequest
= badRequest(views.html.form.render(formWithErrors));
// 404。内部エラー。
Result oops = internalServerError(“Oops”);
// ステータスを指定して返す
Result anyStatus
= status(488, “Strange response type”);
[/java]
などなど。状況によってレスポンスを簡単に変えられる仕組みになっている。