コントローラーとビューの基本 (1/5)
作成:2013-12-07 15:48
更新:2013-12-07 15:48
更新:2013-12-07 15:48
■Slim3のコントローラークラス
前回、build.xmlのgen-controllerを使ってコントローラーとビューを作成しました。まずは、これらの中身をチェックして、両者の基本的な仕組みから理解していくことにしましょう。
まずは、コントローラーです。下に、生成されたコントローラークラスのソースコードを掲載しておきます。ソースコードのポイントをまとめておきましょう。
●コントローラーは「controller」パッケージ内に作成される
packageを見ると、com.tuyano.libro.myslim3appというアプリケーションのルートパッケージ下に「controller」というパッケージを用意し、そこにクラスが配置されていることがわかります。コントローラーは、このようにルートパッケージ下のcontroller内に作成されるのが基本です。必要に応じて、この中に更にパッケージを用意し整理することもできます。
●org.slim3.controller.Controllerを継承する
コントローラークラスは、Slim3に用意されているControllerクラスを継承します。これにより、このクラスがコントローラーとして機能するようになります。
●必ず「run」メソッドを実装する
コントローラーには、runというメソッドが1つだけあります。これが、そのコントローラーが呼び出された際に実行されるメソッドです。
ここではルート(/)にアクセスするコントローラーを作りました。/というのは、要するに/indexへのアクセスということですね。/indexにアクセスすると実行されるコントローラーとしてIndexControllerが作られたわけです。非常にわかりやすいですね。
このように、コントローラーに設定されているアドレスにアクセスをすると、それに対応するコントローラー内のrunメソッドが呼び出される、という形でSlim3は機能します。ということは、つまり「1つのアドレスに対し1つのコントローラー」という形でコントローラーが作られることになります。
RailsタイプのようなMVCフレームワークの場合、1つのコントローラー内にいくつものアクションメソッドを実装して、「このアドレス下にアクセスした場合は全部このコントローラーが処理する」というような感じでまとめられていることが多いのですが、Slim3は「1コントローラー=1アクション」です。1つのコントローラー内に、いくつものアクションを用意することはできません。
デフォルトでは、「forward("index.jsp")」という文が書かれていますね。これにより、index.jspにフォワードするNavigationが作成され、返されていたわけです。
整理すると、Slim3のコントローラーは、「指定のアドレスにアクセスがあったら、runで必要な処理を行ってから指定のビューにフォワードする」というものだ、と考えていいでしょう。非常にシンプルなしくみですね。
まずは、コントローラーです。下に、生成されたコントローラークラスのソースコードを掲載しておきます。ソースコードのポイントをまとめておきましょう。
●コントローラーは「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で必要な処理を行ってから指定のビューにフォワードする」というものだ、と考えていいでしょう。非常にシンプルなしくみですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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"); } }
※関連コンテンツ