Powered by SmartDoc

JSF概説

はじめに

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

JSFを利用することによって、簡単に高機能なWebアプリケーションのインタフェースを作成できます。JSFでは、プログラマが自分でコーディング作業をするだけでなく、ツールによるWebアプリケーションの作成を強く意識しています。

JSFの仕様策定の中心人物であるCraig McClanahan氏は、MVCモデル2によるWebアプリケーションのフレームワークとして非常に著名な、Strutsの開発者でもあります。そのせいか、JSFとStrutsには重複する機能が多くあります。

さて、Javaには、Javaの標準技術を定めるJava Community Process (JCP)という手続きがあります。JSFは、JCPの中で"JSR 127"として仕様が策定されてきました。つまり、JSFはJavaの標準フレームワークとして仕様が定められたということになります。

JSFは、このJCPの議論を経て、2004年3月にversion 1.0がリリースされました。2004年5月には、早くもマイナーバージョンアップであるversion 1.1がリリースされています。

本講座では、このJSF version 1.1について解説していきます。

JSF の特徴

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

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

JSFでは、MVCモデル2によるWebアプリケーションのフレームワークが用意されています。こうした機能は、これまでStrutsなどのフレームワーク対応してきた部分です。

従来ののWebアプリケーションフレームワークと同じく、JSFはViewとControllerの部分を担当します。また、入力値がそのアプリケーションにふさわしいものかどうか検証するような機能も標準的に備えています。

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

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

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

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

環境設定

JSFを動かすために必要なものを挙げてみましょう。

Tomcat
JSF は Tomcat などの「Webコンテナ」の内部で動作します。
JSF 1.1
ダウンロードしてアーカイブを開くだけです。 アーカイブには次のものが含まれています。
JSTL 1.1
Tomcat で JSF を動かすには、 JSTL (Java Standard Tag Library) 1.1 が別に必要になります。
Ant
Antを使うと、コンパイルやアーカイブの作成が楽に行えます。 Antについては後の章で解説します。

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

それでは、JSF 1.1に付属のサンプルアプリケーションを動かしてみましょう。ここで解説するのは、「guessNumberサンプルアプリケーション」です。

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

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

guessNumber

実行方法

このアプリケーションを動かすには、次の手順を実行します。

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

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

Webの画面は、UIコンポーネントから構成されます。

guessNumber中のUIコンポーネント

画面遷移

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

間違ったデータの入力

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

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