libro
www.tuyano.com
Slim3によるGAE/J開発入門

コントローラーとビューの基本 (1/5)

作成:2013-12-07 15:48
更新:2013-12-07 15:48

■Slim3のコントローラークラス

前回、build.xmlgen-controllerを使ってコントローラーとビューを作成しました。まずは、これらの中身をチェックして、両者の基本的な仕組みから理解していくことにしましょう。

まずは、コントローラーです。下に、生成されたコントローラークラスのソースコードを掲載しておきます。ソースコードのポイントをまとめておきましょう。

●コントローラーは「controller」パッケージ内に作成される
 packageを見ると、com.tuyano.libro.myslim3appというアプリケーションのルートパッケージ下に「controller」というパッケージを用意し、そこにクラスが配置されていることがわかります。コントローラーは、このようにルートパッケージ下のcontroller内に作成されるのが基本です。必要に応じて、この中に更にパッケージを用意し整理することもできます。

●org.slim3.controller.Controllerを継承する
コントローラークラスは、Slim3に用意されているControllerクラスを継承します。これにより、このクラスがコントローラーとして機能するようになります。

●必ず「run」メソッドを実装する
コントローラーには、runというメソッドが1つだけあります。これが、そのコントローラーが呼び出された際に実行されるメソッドです。


■コントローラーとURLパスの関係
Slim3では、gen-controllerでコントローラーを作成するとき、公開するURLパスを指定しました。そのパスに応じ、自動的にクラスが生成されました。Slim3では、コントローラーとURLパスは密接な関連があります。

ここではルート(/)にアクセスするコントローラーを作りました。/というのは、要するに/indexへのアクセスということですね。/indexにアクセスすると実行されるコントローラーとしてIndexControllerが作られたわけです。非常にわかりやすいですね。

このように、コントローラーに設定されているアドレスにアクセスをすると、それに対応するコントローラー内のrunメソッドが呼び出される、という形でSlim3は機能します。ということは、つまり「1つのアドレスに対し1つのコントローラー」という形でコントローラーが作られることになります。

RailsタイプのようなMVCフレームワークの場合、1つのコントローラー内にいくつものアクションメソッドを実装して、「このアドレス下にアクセスした場合は全部このコントローラーが処理する」というような感じでまとめられていることが多いのですが、Slim3は「1コントローラー=1アクション」です。1つのコントローラー内に、いくつものアクションを用意することはできません。


■Navigationとforward
さて、runメソッドでは、「Navigation」というクラスが返値に設定されています。これは、指定のビューへのナビゲーションを管理するクラスです。コントローラーのrunメソッドでは、最後にこのNavigationインスタンスを返すことで、どのビューを表示させるかを指定することができます。

デフォルトでは、「forward("index.jsp")」という文が書かれていますね。これにより、index.jspにフォワードするNavigationが作成され、返されていたわけです。

整理すると、Slim3のコントローラーは、「指定のアドレスにアクセスがあったら、runで必要な処理を行ってから指定のビューにフォワードする」というものだ、と考えていいでしょう。非常にシンプルなしくみですね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※IndexController.javaのソースコード

package com.tuyano.libro.myslim3app.controller;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;

public class IndexController extends Controller {

    @Override
    public Navigation run() throws Exception {
        return forward("index.jsp");
    }
}
※関連コンテンツ

「Slim3によるGAE/J開発入門」に戻る