アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 
 @IT > JSFで購入フォームを作ろう − 画面遷移をビジュアルに開発
 
@IT Special

 

PR

JSFで購入フォームを作ろう
− 画面遷移をビジュアルに開発


 〜 連載 「開発マネージャーのMyEclipse指南塾」 第9回 〜

今回はECサイトの購入フォームを作成します。購入フォームは、購入者の情報や送付先、購入数などを入力するフォームです。購入フォームには、入力値チェックなどの機能を持たせますが、JSFを使うと実装が非常に簡単になります。
前回(第8回)については日本語MyEclipseポータルサイトで
第8回「バグを見つけろ!(2)
MyEclipseでJavaScriptのデバッグ」の主な内容

・ローカルファイルでのJavaScriptのデバッグ
・リモートでのJavaScriptのデバッグ
・JavaScriptデバッガでバグを発見
・他人のサイトもデバッグしてしまう
  「インスタント・オン・デバッギング」



  購入フォームとJSF
今回の主な内容
購入フォームとJSF
購入フォームの設計
JSFの開発

 前回までで商品を表示して、ショッピングカートに入れるところまでを開発してきました。ECサイトの基本機能で残る部分は購入フォームです。

 ECサイトにおいて購入フォームは非常に重要です。サイトの訪問者が買う気になって商品を選ぶところまで行っても購入フォームが使いにくいと買うのをあきらめてしまいます。最後の最後で売り上げを逃してしまうというのはECサイトの運営者にとって機会損失です。そこで購入フォームは、できるだけユーザーに親切になるようきめ細かく開発する必要があります。また一般的に、入力を伴う画面の開発はコード量が多くなります。そのため購入フォームは、ECサイト全体の開発工数の中で、比較的多くの割合を占めます。

購入フォームの開発に適しているJSF

 サーブレットやJSPだけで使いやすいフォームを作るのはなかなか大変です。例えば入力ミスがあったとき、エラー画面を表示してWebブラウザの「戻る」ボタンをクリックさせるのは不親切です。元の入力画面に入力値を保持したままエラーメッセージを表示する方が親切です。そういった実装を行うには非常に手間が掛かります。

 さらには、入力値のチェックを逐一やっていかなければなりません。入力値でエラーがあった場合、ユーザーに修正させるのではなく、自動的に変換する方が親切です。こういったチェックや変換のコーディングも行わなければなりません。

 購入フォームが複数ページにわたる場合は入力値を1つ1つHTTPリクエストから取り出してチェックし、HTTPセッションに移し変えていかなければなりません。

 こういったコーディングを簡素にしてくれるのがJSF(JavaServer Faces)です。

JSFの基本的な仕組み

 JSFの基本的な仕組みを説明します。JSFでは、Webブラウザに表示される構成要素をツリー状のオブジェクトとして管理します。例えば、ボタンであったり、テキストボックスであったり、フォームなどの構成要素です。これを「コンポーネントツリー」と呼びます。

 WebブラウザからHTTPリクエストがあると、最初にWebブラウザに表示されていた構成要素をコンポーネントツリーとして復元します。

 次に、入力値のチェックを行います。入力値のチェックはJSFのカスタムタグであらかじめ用意されているものはカスタムタグだけで記述できますし、より詳細なチェックをするコードを記述することもできます。入力値が妥当であれば、入力値がコンポーネントに反映されます。入力値がコンポーネントに反映されると、イベントが実行されます。このイベントの実行は、ボタンに関連付けられたメソッドの実行であったり、入力値の変更などに関連付けられたメソッドの実行です。

 最後に、更新されたコンポーネントツリーがHTMLとして描画され、結果がWebブラウザに送信されます。このとき、イベントの実行結果によっては元のページとは別のページに遷移することもあります()。

図 JSFの基本的な仕組み
図 JSFの基本的な仕組み

 フォームの入力値やボタンを押したときに実行されるメソッドはMVCのModelに相当するJavaオブジェクトに関連付けることができます。このJavaオブジェクトを「マネージドBean」と呼びます。

ビジュアル開発に適しているJSF

 JSFはビジュアル開発を念頭において設計されています。基本的には、テキストベースの技術でテキストのみでの開発も十分にできますが、開発ツールによりビジュアルに開発できます。

 例えば、画面にテキストボックスやボタンを配置していき、ボタンにコードを記述していくといった手順での開発ができます。MyEclipseには、強力なJSFビジュアル開発機能があります。

  購入フォームの設計

 それでは、まずどういう購入フォームを作るか考えていきましょう。購入フォームでは、氏名や住所といった商品のお届けに必要な情報を入力してもらわなければなりません。入力してもらったら、最後に確認ページで入力内容を再表示しましょう。

 繰り返し購入するユーザーに、何度も氏名や住所を入力させるのは不親切です。あらかじめユーザー登録してある場合は、ユーザーIDとパスワードを入力すれば、氏名や住所がセットされるようにしましょう。

 以上をふまえ、完成時の画面イメージを以下に示します。

画面1 ログインフォーム
画面1 ログインフォーム

画面2 入力ページ
画面2 入力ページ

画面3 確認ページ
画面3 確認ページ

画面4 購入完了ページ
画面4 購入完了ページ

実装について

 マネージドBeanは新規に作成する場合が多いです。しかし、ここで新規にマネージドBeanのクラスを作成するとどうなるでしょうか。

 入力値はマネージドBeanのインスタンス変数に格納されます。入力値はデータベースに保存するので連載第4回「ショッピングカートを作ろう」で作成したJuchuuクラスにすべての値を移し変えてsaveすることになるでしょう。そうなると、マネージドBeanからJuchuuへ、1項目ごとに「juchuu.setShimei(bean.getShimei())」といったコードを作成しなければなりません。項目数分、値のコピーをしなければならないので、コードとしてはやや冗長になります。

 もっと簡単にできないでしょうか。JSFでは、マネージドBeanはPOJO(Plain Old Java Object)です。Hibernateの永続化クラスもPOJOです。それならば、Hibernateの永続化クラスをマネージドBeanにしてみてはどうでしょう? 今回のケースはこれで行けそうです。画面への入力値がそのままHibernate永続化クラスにセットされるので、値の移し変えコードを書かなくてすみます。

 なお、今回はこの方法で実装できますが、常にこのような実装が適しているとは限りません。アプリケーションごとに適した方法を検討してください。

続きは日本語MyEclipseポータルサイトでもご覧いただけます
第9回の残りの主な内容

・JSFの開発
 ビジュアルに画面遷移を定義
  − [MyEclipse JSF 構成エディター]
 新規JSPの作成
 新規ナビゲーション・ケースの作成
 残りの画面遷移の作成

第10回「JSFで購入フォームを作ろう
− JSFをビジュアルに開発」の主な内容

・マネージドBeanの作成
・ログインページの作成



  JSFの開発

 それでは、実際に開発をしていきましょう。

 JSFの開発をするためには、まずプロジェクトにJSF機能を追加します。パッケージ・エクスプローラーのプロジェクト名を右クリックし、[MyEclipse]→[JSF機能の追加]をクリックします。

画面5 [JSF機能の追加]
画面5 [JSF機能の追加]

 JSF機能の追加のダイアログでは、そのまま[終了]をクリックします。これで、プロジェクトでJSFが使えるようになりました。

ビジュアルに画面遷移を定義 − [MyEclipse JSF 構成エディター]

 次に、画面遷移を定義していきましょう。画面遷移は「faces-config.xml」というXMLファイルに定義します。MyEclipseでは、このXMLファイルをビジュアルに編集できます。

 [パッケージ・エクスプローラー]で、[WebRoot]→[WEB-INF]の下の「faces-config.xml」をダブルクリックします。中央で[MyEclipse JSF 構成エディター]が開きます。

画面6 [MyEclipse JSF 構成エディター]
画面6 [MyEclipse JSF 構成エディター]

新規JSPの作成

 [MyEclipse JSF 構成エディター]左側の「J」と書いてあるアイコンをクリックします。ウィンドウ中央上ぐらいの適当な位置でクリックします。[新規 JSP ページ]ダイアログが開きます。

画面7 [新規 JSP ページ]ダイアログ
画面7 [新規 JSP ページ]ダイアログ

 [ファイル名]に「login.jsp」と入力します。[使用するテンプレート]は「デフォルト JSF テンプレート」を選択します。[終了]をクリックします。これで「login.jsp」が配置されます。四角いlogin.jspはドラッグして自由に位置を変えられます。見やすい位置に移動してください。

 同じ要領で「kounyuu.jsp」を作成してください。

新規ナビゲーション・ケースの作成

 次に、左側の矢印のアイコンをクリックします。「login.jsp」をクリックし、続いて「kounyuu.jsp」をクリックします。[ナビゲーション・ケース・ウィザード]ダイアログが開きます。

画面8 [ナビゲーション・ケース・ウィザード]ダイアログ
画面8 [ナビゲーション・ケース・ウィザード]ダイアログ

 [結果:]のところに「go_kounyuu」と入力し、[リダイレクト]にチェックを入れます。[終了]をクリックします。これで、新規のナビゲーション・ケースが作成されます。画面は次のようになります。

画面9 ナビゲーション・ケース
画面9 ナビゲーション・ケース

 どのように画面が遷移するか、非常に分かりやすくなっていることを確認しましょう。

残りの画面遷移の作成

 同じ要領で、残りの画面遷移を作成しましょう。

  • kakunin.jspを新規に作成
  • kounyuukanryou.jspを新規に作成
  • login.jspからkakunin.jspに新規にナビゲーション・ケースを追加。[結果]は「go_kakunin」とする。[リダイレクト]をチェック
  • kounyuu.jspからkakunin.jspに新規にナビゲーション・ケースを追加。[結果]は「go_kakunin」とする。[リダイレクト]をチェック
  • kakunin.jspからkounyuukanryou.jspに新規ナビゲーション・ケースを追加。[結果]は「go_kounyuukanryou」とする。[リダイレクト]をチェック
  • login.jspからlogin.jspに新規ナビゲーション・ケースを追加。[結果]は「failure」とする。[リダイレクト]のチェックは外す

 出来上がりは以下のようになります。

画面10 画面遷移の完成
画面10 画面遷移の完成

 ナビゲーション・ケースの線をクリックすると、四角い点が表示されます。これをドラッグすると、線の位置や角度が変えられます。見やすい位置に移動しましょう。

 ナビゲーション・ケースの線をダブルクリックすると、内容が編集できます。新規作成のときに間違えてしまった場合や、変更したい場合などはダブルクリックして編集しましょう。

 以上で、画面遷移まで完成しました。次回はマネージドBeanとJSFページの作成を行っていきます。

続き(第10回)は日本語MyEclipseポータルサイトで
第10回「JSFで購入フォームを作ろう
− JSFをビジュアルに開発」の主な内容

・マネージドBeanの作成
・ログインページの作成



※本記事は、日立製作所の『日本語MyEclipseポータルサイト』に掲載された記事を許諾を得て、再構成したものです。
提供:株式会社 日立製作所
企画:アイティメディア 営業局
制作:@IT編集部
掲載内容有効期限:2008年3月31日
 
関連リンク
日本語MyEclipseポータルサイト
日本語MyEclipse 無料体験版ダウンロード(会員登録不要)
Cosminexus(コズミネクサス)
日立製作所

「開発マネージャーのMyEclipse指南塾」
連載予定
第1回: EclipseでAmazon Webサービスを使うショッピングサイトを構築するには?
第2回: Amazonから商品情報を取得するプログラムを作ろう(
第3回: MyEclipse ビジュアルJSPデザイナーで商品ページを作ろう
第4回: ショッピングカートを作ろう(
第5回: Ajaxでリアルタイム検索結果表示のインクリメンタルサーチを作るには?
第6回: MyEclipse JavaScriptエディタでJavaScriptを開発しよう(
第7回: バグを見つけろ! (1)MyEclipse AJAX WebブラウザーでAjaxをデバッグ
第8回: バグを見つけろ! (2)MyEclipseでJavaScriptのデバッグ(
第9回: JSFで購入フォームを作ろう―画面遷移をビジュアルに開発
第10回: JSFで購入フォームを作ろう―JSFをビジュアルに開発(
第11回: JSFで購入フォームを作ろう―完成
第12回: MyEclipse Reportで売上グラフを作ろう(

の回は日本語MyEclipseポータルサイトにて公開


@IT関連記事
国産の強みと多数のSIノウハウで場を“満足”させるアプリケーションサーバ〜 日本語版MyEclipseやJP1との連携も強化されたCosminexus(コズミネクサス)の強みとは? 〜(@IT Special)
連載「MyEclipseでAjax+Javaをやさしく開発」(@IT Java Solution)
便利なプラグインの集大成MyEclipse(@IT Java Solution)
Javaの最新動向を見極める デブサミ2007「MyEclipseならAjaxもええじゃないか♪」(@IT Java Solution)
日立、SOA基盤「Cosminexus」の新版発表〜システム開発期間を短縮〜(@IT NewsInsight)
SOA対応した日立「Cosminexus」、開発効率3倍の根拠は(@IT NewsInsight)
【プロダクトレビュー】ミッションクリティカル機能を強化Cosminexus AS Version6(@IT Java Solution)



 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ