ソフトウェア開発には、「Model-View-Controller (MVC)」と呼ばれている方法論があります。この方法論では、アプリケーションを構成するコンポーネントが、「モデル(Model)」・「ビュー(View)」・「コントローラ(Controller)」と名づけられた、3つの部分に分けられています(図6.1[MVCモデル2])。
最近のJ2EEとその関連技術では、モデルにJavaBeansを使い、ビューにJSPを使い、コントローラにServletを使う開発手法が採用されています。このJ2EEの手法は、「MVCモデル2」と呼ばれています。
では、この「モデル・ビュー・コントローラ」について見てみましょう。
「モデル」は、アプリケーションのデータと、データの処理をするプログラムをまとめた部分です。この「データの処理をするプログラム」のことを「ビジネスロジック」と言います。
JavaBeans (あるいはそのコレクション)がモデルとして利用されます。
「ビュー」は、「モデル」の表示を担当する部分です。J2EEでは、JSPがよく利用されます。
「コントローラ」は、「モデル」と「ビュー」を制御する部分です。Servletが担当します。
MVCモデル2を用いたWebアプリケーションの処理の流れは、次のようになります。
まず、ServletがHTTPから要求を受け取ります。そして、データベースへのアクセスなどの必要な処理をします。
処理した結果はJavaBeansに格納します。ServletはJavaBeans (または、Beansをまとめたコレクション)をJSPに渡します。
JSPはタグライブラリを駆使して処理結果を出力します。このとき、JavaBeansのプロパティを出力することになります。
JSFでもMVCモデル2を採用しています。MVCモデル2の3つの部分のうち、JSFは主にViewとControllerを担当しています。それでは、それぞれの部分について見てみましょう。
JSFでは、"FacesServlet"というServletがコントローラとなります。Webブラウザからの要求は、すべてFacesServletが処理します。
ビューはJSPが受け持ちます。
JSP独自のタグライブラリを用いて、UIコンポーネントを表示することになります。このとき、「レンダラ」という機能によって、タグがどのようなHTMLを出力するか切り替えることができます。
また、後述するValue BindingやMethod Bindingを利用できます。
モデルにはJavaBeansを利用します。Value Bindingによって、JavaBeansの「プロパティ」を便利に活用できるようになっています。
HTMLのフォームから入力されたパラメータは、Managed Bean (またはBacking Bean)と呼ばれるJavaBeansに格納されます。
また、アプリケーションで使うビジネスロジックも、Managed Beanに記述できます。
JSFでは、faces-config.xmlというファイルに、次のような情報を記述します。