[特別企画] JavaServer Facesを理解する(後編) |
JSFによるWebアプリケーション開発 |
五十嵐由
2003/8/27
前回「JSFの構造を理解する」では、「JavaServer
Faces」(以下JSF)の概要を説明した後、「Java
Web Services Developer Pack」(以下JWSDP)に付属するサンプルアプリケーションを動作させてみました。今回は、筆者が作成したJSFアプリケーションを紹介しながら、より深く理解していただくことにします。
解説を始める前に、前回の記事を読んでもJSFのメリットがよく分からないという読者のために、再度JSFを使用するメリットを以下に整理します。
●ステート情報の保持 ●Webアプリケーションを構築するうえで必要なコンポーネントが用意されている |
これまでのJSPとServlet、JavaBeansを用いたWebアプリケーションを実装する際に必要だった面倒な処理をなくし、あればよいと皆が感じていた機能を提供してくれるのがJSFだといえるでしょう。また、JSFがWebアプリケーションのユーザーインターフェイスを構築するための標準フレームワークとなれば、開発モデルの統一化を図ることもでき、開発効率やサポート効率の向上も期待できるでしょう。
さて、それでは、JSFアプリケーションの構築に話を移しましょう。
![]() |
JSFアプリケーションの構築 |
筆者が作成したアプリケーションはJWSDPに付属する「Car Demo Sample」を簡略化したものです。アプリケーションのソースコードとWARパッケージはこちらからダウンロードしてください。
アプリケーションの内容は以下のとおりです。
(1) | カタログから車を選択 |
(2) | 車のパッケージ(Custom、Deluxe)、オプション(エンジン、カーオーディオ、GPS、セキュリティシステム)の選択、変更および費用の計算 |
(3) | 買い物内容の確認 |
(4) | クレジットカード番号、カードの使用期限を入力し、買い物の完了 |
(5) | お礼メッセージの表示 |
また、アプリケーションのページ構成とクラスの関係は下図のようになります。
![]() |
図1 アプリケーションのページ構成とクラスの関係 |
次に、JSFアプリケーションのディレクトリ、ファイル構成(イメージファイルなどは省略)を説明します。JSFアプリケーションのディレクトリ構造は従来のWebアプリケーションと同様です。アプリケーションのルートディレクトリにはJSP、HTMLなどのファイルを配置し、WEB-INFディレクトリにfaces-config.xml、web.xmlなどのアプリケーション定義ファイル、WEB-INF/classesディレクトリに作成したクラスファイル、WEB-INF/libディレクトリにアプリケーションに必要なライブラリを配置します。
JSFアプリケーションを実行するために必要なライブラリは下図を参考にしてください(ただし、今回のアプリケーションはJWSDPにバンドルされているTomcatにデプロイしますので、下図のすべてのJarファイルをWEB-INF/libに用意しなくても動作します)。
![]() |
図2 ディレクトリ構成 (クリックすると拡大します) |
次に、筆者がJSFアプリケーションを作成した手順を紹介しましょう。以下のような手順で作成しました。
(1) | モデル、ビジネスロジック |
・モデル、ビジネスロジッククラスの実装 ・コンフィグレーションファイルの設定 |
|
(2) | カスタムコンバータ、カスタムバリデータ、タブハンドラ |
・クラスの実装 ・コンフィグレーションファイルの設定 |
|
(3) | UIコンポーネント、JSFタグライブラリを使用したJSPの作成 |
(4) | ページナビゲーションの定義、そのほか |
それでは、作成した順にアプリケーションの処理内容を説明していきましょう。
1/4 | ![]() |
INDEX |
||
JavaServer Facesを理解する(後編) | ||
![]() |
Page1 JSFアプリケーションの構築 |
|
Page2 |
||
Page3 カスタムコンバータ、カスタムバリデータ、タブハンドラ |
||
Page4 UIコンポーネント、JSFタグライブラリを使用したJSPの作成 ページナビゲーションの定義 まとめ |
INDEX | |
特別企画:JavaServer Facesを理解する | |
前編 JSFの構造を理解する | |
![]() |
後編 JSFによるWebアプリケーション開発 |
![]() |
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
||
|
||
![]() |
Java Agile 記事ランキング
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- COBOL/メインフレームのJava/マイクロサービス化サービスをデロイト トーマツが発表 どう実現しているのか
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- Springにおける「RestController」と「Controller」の違いとは
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- 企業のアジャイル化に「CoE」は不可欠? アジャイルCoEの基本から適用方法まで解説
- Oracle、「Java 23」を提供開始 機能強化と変更点をおさらい
- モダンブラウザで動作するWebAssemblyベースのJVM「CheerpJ 3.0」が登場
- 一見それほど変わらないように思えるKotlinとScala、どう使い分けるべき?
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- COBOL/メインフレームのJava/マイクロサービス化サービスをデロイト トーマツが発表 どう実現しているのか
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- Oracle、「Java 23」を提供開始 機能強化と変更点をおさらい
- COBOLをやめても消えない“亡霊”「JOBOL」の正体
- Spring Bootプロジェクトを素早く作成できる「Spring Initializr」の使い方
- Springにおける「RestController」と「Controller」の違いとは
- 企業のアジャイル化に「CoE」は不可欠? アジャイルCoEの基本から適用方法まで解説