ホテル予約アプリケーションを JavaServer Facesアプリケーションとして作成する前に、以下の手順でアプリケーション設計を行います。
1 画面の設計
使用する入出力ページおよび設定する入出力フィールドを設計します。
各画面に対して、それぞれ入出力ページを作成します。
画面名 | JSPファイル名 | 説明 |
---|---|---|
予約状況 | reserveLook.jsp | 1週間の予約状況を表示します。 |
予約詳細 | reserveDetails.jsp | 詳細な予約情報を入力し予約処理を行います。 |
予約確認 | reserveConfirm.jsp | 予約内容の確認を行います。 |
予約終了 | reserveTermination.jsp | 予約を完了します。最初の画面に戻り別の予約を行うこともできます。 |
予約詳細画面に必要な入出力フィールド、配置を考え、画面を設計します。
予約詳細画面を次に示します。
上記の画面から、予約詳細画面で入力または出力が必要な項目は8つあります。
「到着日」を指定するドロップダウンリスト
「出発日」を指定するドロップダウンリスト
「部屋の種別」を指定するラジオボタン
「宿泊人数」を指定する入力フィールド
「オプション」を指定するチェックボックス
「予約する」ボタンクリック時に発生したエラーを表示する出力フィールド
予約するときにクリックする「予約する」ボタン
予約状況画面に戻るときにクリックする「予約状況へ戻る」ボタン
同様に、その他の画面についても必要な入出力フィールド、配置を考え、画面を設計します。
予約確認画面で必要な項目は次の7つです。
「ご利用期間」を表示する出力フィールド(到着日と出発日を合わせて表示します。)
「部屋の種別」を表示する出力フィールド
「宿泊人数」を表示する出力フィールド
「オプション」を表示する出力フィールド
「料金」を表示する出力フィールド(宿泊人数やオプションなどから合計金額を表示します。)
予約するときにクリックする「OK」ボタン
予約詳細画面に戻るときにクリックする「キャンセル」ボタン
予約状況画面で必要な項目は次の2つです。
予約状況を表示する表
予約の入力を開始するための「予約する」ボタン
予約終了画面で必要な項目は次のひとつです。
予約状況画面に戻るための「初期画面へ」ボタン
以上の3画面ではデータを入力するフィールドはありません。
2 Managed Beanの設計
それぞれの画面領域に対して Managed Bean、入出力項目、およびアクション項目の整理を行います。Managed Beanは、入出力ページとアプリケーションの間で、データのやりとりを仲介します。入出力ページ、Managed Bean、イベント処理の関係は以下の図のようになります。
アプリケーション内で関係の深いデータを1つのManaged Beanでまとめて保存することにより、それらのデータの扱いが容易になります。画面構成のみ変えたい場合は入出力ページのレイアウトを変えるだけでよく、Managed Beanには手を加える必要はありません。また、イベント処理などユーザアプリケーションの変更も、Managed Beanの項目が変わらない限りは、入出力ページ側に手が入ることはありません。
まず、どのような種類のbeanを用意するかを考えます。Managed Beanを作成するときには以下のことに注意します。
関連の深い項目は1つのBeanにする。
画面に従ってBeanを作成する。
“1 画面の設計”で定義した各領域で使用するデータを考えます。ここでは、1週間の予約状況を1つのManaged Beanにします。作成するManaged Beanを以下に示します。
Managed Bean名 | クラス名 | 説明 |
---|---|---|
reserveBean | ReserveBean | 1件の予約内容をもちます。 |
以下にReserveBeanが持つデータ項目を示します。
「予約詳細画面」で指定された「到着日」を持ちます。
このデータは「予約確認画面」の「ご利用期間」の表示にも使用します。
「予約詳細画面」で指定された「出発日」を持ちます。
このデータは「予約確認画面」の「ご利用期間」の表示にも使用します。
「予約詳細画面」で指定された「部屋の種別」を持ちます。
このデータは「予約確認画面」の「部屋の種別」の表示にも使用します。
「予約詳細画面」で指定された宿泊人数を持ちます。
「予約詳細画面」で指定された「オプション」を持ちます。
このデータは「予約確認画面」の「オプション」の表示にも使用します。
「予約詳細画面」で指定された条件で料金を計算し「予約確認画面」で表示します。
予約内容に誤りがあったときに表示するメッセージを持ちます。このデータはイベント処理で使用します。
日付ごとの予約状況の一覧表です。
上記データ項目ごとにプロパティ名を決めます。
「プロパティ名」は入出力ページがManaged Beanから特定のデータを取り出すときの名前として使われます。ここでは以下のようにプロパティ名を定義します。プロパティ名は、項目から連想しやすい名前にします。
データ項目名 | プロパティ名 |
---|---|
到着日 | arrivalDay |
出発日 | departureDay |
部屋の種別 | roomType |
宿泊人数 | people |
オプション | options |
料金 | charge |
エラーメッセージ | message |
予約状況 | reserveLookTable |
3 画面項目⇔Beanの対応の設計
画面入出力項目に関しての整理を行います。各入出力ページの各入出力項目(フォームまたはApcoordinatorでサポートしているGUI部品)について以下の事柄について一覧を作成します。
プロパティ名
Managed Bean
I/O
データ型
データの意味
「プロパティ名」は、“2 Managed Beanの設計”で定義したものを使用します。入出力ページは、関連するManaged Beanからこのプロパティ名を使い、各項目の値を取得します。
「Managed Bean名」は各入出力ページに対応するManaged Bean名を表します。
「I/O」は、ページの各項目について、入力のみであれば"I"、出力(表示)のみであれば"O"、入力出力の両方であれば"I/O"となります。
「データの意味」はプロパティ名に対応するデータの意味です。
プロパティ名 | Managed Bean名 | I/O | データの意味 |
---|---|---|---|
arrivalDay | reserveBean | I/O | 到着日 |
departureDay | I/O | 出発日 | |
roomType | I/O | 部屋の種別 | |
people | I/O | 宿泊人数 | |
options | I/O | オプション | |
message | O | エラーメッセージ |
プロパティ名 | Managed Bean名 | I/O | データの意味 |
---|---|---|---|
arrivalDayと | reserveBean | O | ご利用期間 |
roomType | O | 部屋の種別 | |
options | O | オプション | |
charge | O | 料金 |
プロパティ名 | Managed Bean名 | I/O | データの意味 |
---|---|---|---|
reserveLookTable | reserveBean | O | 利用状況 |
reserveTermination.jspについては、Managed Beanに対応付ける項目はありません。
4 画面遷移の設計
それぞれの画面について、どのボタンをクリックしたときにどの画面へ遷移するかを設計します。以下の事柄について一覧を作成します。
ボタン
条件
遷移先画面名
遷移先ページ
コメント
「ボタン」は、クリックするボタンです。
「条件」は、同じボタンがクリックされた場合でも条件によって別の画面に遷移する場合に、その条件を表します。
「遷移先画面名」は、遷移する画面名を表します。
「遷移先ページ」は、遷移先の画面のJSPファイルを表します。
「コメント」は、必要に応じてコメントを指定します。
ボタン | 条件 | 遷移先画面名 | 遷移先ページ | コメント |
---|---|---|---|---|
予約する | 入力内容に誤りがない場合 | ok | reserveConfirm.jsp | 予約確認画面へ |
入力内容に誤りがある場合 | failed | reserveDetails.jsp | 予約詳細画面を再表示 | |
予約状況へ戻る | - | back | reserveLook.jsp | 予約状況画面へ |
ボタン | 条件 | 遷移先画面名 | 遷移先ページ | コメント |
---|---|---|---|---|
OK | - | ok | reserveTermination.jsp | 予約終了画面へ |
キャンセル | - | cancel | reserveDetailes.jsp | 予約詳細画面へ |
ボタン | 条件 | 遷移先画面名 | 遷移先ページ | コメント |
---|---|---|---|---|
予約する | - | success | reserveDetails.jsp | 予約詳細画面へ |
ボタン | 条件 | 遷移先画面名 | 遷移先ページ | コメント |
---|---|---|---|---|
初期画面へ | - | success | reserveLook.jsp | 予約状況画面へ |