Powered by SmartDoc

JSF概説

フレームワーク

ソフトウェア開発の現場では、パターン化されたプログラムを書くことが多くあります。

例えば、どんなWebアプリケーションでも次のような処理をする必要があるでしょう。

こうしたパターン化された機能をあらかじめ用意しておき、それらをあらゆるWebアプリケーションで利用し、プログラマは個々のプログラムに固有の機能を追加するだけで済んだら便利です。

このような目的で作られたソフトウェアのことを「フレームワーク」と言います。

フレームワークを利用することで、決まったパターンをわざわざ書く必要がなくなり、プログラム開発が楽になります。

JSF とは何か

JSF (JavaServer Faces)は、Webアプリケーションを作成するためのフレームワークです。

最近のJava技術には、「EoD (Ease of Development)」という考え方があります。「いかにラクにソフトウェアを開発するか」ということです。J2SE 5.0やEJB 3.0、そして今回とりあげるJSFにも、このEoDの考え方が取り入れられています。

JSFでのWebアプリケーション作成は簡単です。現在ではJavaでWebアプリケーションを作成するときには、"Struts"などのフレームワークを利用するケースがほとんどですが、JSFではStrutsよりも簡単にWebアプリケーションを作成できるのです。

また、JSFは「開発ツール」でのWebアプリケーション開発を容易にする技術でもあります。開発ツールを使えば、GUIのアプリケーション開発のように、UIコンポーネントをドラッグ&ドロップしてWebアプリケーションを作成できます。

昨年(2004年)は、JSF (JavaServer Faces)元年とも言うべき年でした。3月には正式版(Version 1.0)がリリースされ、今年の末にリリースされる予定のJ2EE 5.0にもJSFが含まれることが決定しました。また7月にはSun Microsystems社からJSFに対応したWebアプリケーション開発ツールである「Sun Java Studio Creator」がリリースされました。アプリケーションサーバの大手ベンダーも、自社の開発ツールでのJSFサポートを表明しています。

JSF の特徴

JSFには、大きく見ると2つの特徴があります。

この2つの特徴について、詳しく見てみましょう。

MVCモデル2によるWebアプリケーション

JSFでは、Strutsなどと同様に、MVCモデル2によるWebアプリケーションのフレームワークが用意されています。

MVCモデル2では、アプリケーションを構成するコンポーネントが、「モデル(Model)」・「ビュー(View)」・「コントローラ(Controller)」と名づけられた、3つの部分に分けられています(図1.1[MVCモデル2])。

MVCモデル2

JSFでは、従来のWebアプリケーションフレームワークと同じく、Controllerははじめから用意されています(後述するFacesServletというServletです)。あとは、ViewとModelの部分で、必要な処理を書き足すことになります。

「UIコンポーネント」でWebページを構成

JSFでは、「UIコンポーネント」でWebページを構成します。UIコンポーネント(User Interface Component)とは、ラベル・テキスト入力フィールド・ボタンなどのGUIの部品のことです。

WindowsのVisula Basicや、JavaのSwingは、いずれもUIコンポーネントを組み合わせてユーザインタフェースを作成します。JSFでは、このようなスタイルでWebの画面を作成していくのです。

JSFでは、従来のUIコンポーネントと同じく、「ボタンが押された」「テキストフィールドの値が変わった」といった「イベント」を処理する機能を持っています。

また、「プロパティ」というものを操作することによって、UIコンポーネントの挙動を変更できます。

必要なファイルのダウンロード

ではさっそく、JSFのサンプルアプリケーションを動かしてみましょう。

まずは、ダウンロードするソフトウェアをを挙げてみます。

Tomcat
JSF は Tomcat などの「Webコンテナ」の内部で動作します。 インストールしておきましょう。
JSF 1.1.01
ダウンロードしてアーカイブを開くだけです。 アーカイブには次のものが含まれています。
JSTL 1.1
Tomcat で JSF を動かすには、 JSTL (Java Standard Tag Library) 1.1 が別に必要になります。

guessNumber サンプルアプリケーション

いよいよサンプルアプリケーションを動かします。ここでは、JSF 1.1.01に入っている「guessNumberサンプルアプリケーション」について解説します。

どんなアプリケーションか

guessNumberは、JavaのマスコットキャラクターであるDukeがイメージしている数(0〜10)を当てるゲームです。ユーザは、0から10までのいずれかの数をWebブラウザに入力します。そうすると、その入力した数が当たりかどうか表示されます。

guessNumber

実行方法

このアプリケーションを動かすには、次の手順を実行します。以下、Tomcatをインストールしたフォルダを環境変数"%CATALINA_HOME%"で表すことにします。SolarisやLinuxなど、Unix環境をお使いの方は、この環境変数を適宜読み替えてください。

  1. JSF 1.1.01のアーカイブのsamples/jsf-guessNumberを、%CATALINA_HOME%\webappsにコピーする。
  2. Tomcatを起動する。
  3. http://localhost:8080/jsf-guessNumber/にアクセスする。

UIコンポーネントによる画面構成

Webの画面は、図1.3[guessNumber中のUIコンポーネント]のようにUIコンポーネントから構成されます。

guessNumber中のUIコンポーネント

画面遷移

このアプリケーションでは、図1.2[guessNumber]のように、ボタンをクリックすると画面が遷移します

エラーメッセージの表示

このguessNumberでは、ユーザは数字を入力します。しかし、数字を入れるべきところを“wakhok”のような文字列を入力したら、エラーメッセージが表示されます。図1.4[文字列を入力したときのエラーメッセージ]の赤字で表示されている部分がエラーメッセージです。

文字列を入力したときのエラーメッセージ