StrutsとJSFは共存、統合どちらへ(5/8 ページ)
フレームワークのStrutsとJSFは目的が似ている。しかし、JSFは後発ながらJCPのJava標準規格として登場した。新たなテクノロジーは、完全に補完する役目を担うのか? コードベースで徹底比較していく。
Strutsアプリケーションの処理の流れ
1. クライアントからのリクエストをActionServletが受け取る。
2. Struts設定ファイルの設定に従ってリクエストパスに関連付いたActionFormがインスタンス化され、リクエストデータがActionFormにセットされる。
3. 入力値検証が設定されている場合は検証が行われる。
4. Struts設定ファイルの設定に従ってリクエストパスに関連付いたActionクラスのexecute()メソッドが呼び出される。
5. Struts設定ファイルの設定に従って画面遷移が行われる。
JSFアプリケーションの処理の流れ
1. クライアントからのリクエストをFacesServletが受け取る。
2. 元の画面に対応したUIコンポーネントにリクエストデータがセットされる。
3. 入力値検証が設定されている場合は検証が行われる。
4. UIコンポーネントが保持しているデータがBackingBeanにコピーされる。
5. イベント(ボタンが押されたなど)処理。イベントに関連付いたメソッドが呼び出される。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
6. faces-config.xmlの設定に従って、次の画面のUIコンポーネントが用意され、画面を生成、画面遷移が行われる。
Strutsアプリケーションの作成
- web.xmlの作成
web.xmlにServletを登録、設定する。Strutsでは、アプリケーション中に唯一存在するServletとしてorg.apache.struts.action.ActionServletを使用する。
クライアントからのリクエストはすべてこのActionServletが受け取る。web.xmlにActionServletをactionというServlet名で登録し、URLパターンに*.doを設定するのが一般的だ。このように設定することによって、URLの末尾が.doで終わるリクエストはすべてActionServletに処理される。ActionServletの初期化パラメータ"config"には、Struts設定ファイルのパスとファイル名を指定する。また、コンテナ起動時にアプリケーションの初期化が行われるように <load-on-startup> 要素を設定する。StrutsではJSPページでカスタムタグを使うので、 <taglib> 要素の設定も必要だ。
リスト2の作成例では、そのほかにfiterの登録、設定とウェルカムファイルリストの登録が行われている。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ActionFormの作成
Strutsでは、クライアントから入力された値を保持するコンポーネントとして、org.apache.struts.action.ActionFormのサブクラスを作成する。リスト3は、userNameという名前で送信される入力値を保持するためのActionFormの実装例だ。JSPページで実装されたフォーム要素のproperty属性の値と同名のプロパティと、アクセッサメソッドを実装する。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
作成したら、Struts設定ファイル(struts-config.xml)の
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Actionクラスの作成
Strutsでは、ビジネスロジックを呼び出すためのコントローラコンポーネントとして、org.apache.struts.action.Actionのサブクラスを作成し、execute()メソッドをオーバーライドして実装する。リスト5は、Actionクラスの実装例だ。このサンプルでは特に行うべきビジネスロジックはないので、execute()メソッドの処理は"success"という名前で登録されたActionForwardオブジェクトを取得し、returnするのみとなっている。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
画面の作成
Strutsでは、カスタムタグを用いてJSPページを作成する。Strutsが標準で提供するタグライブラリを使うのが基本だ。
リスト6とリスト7は、Strutsのカスタムタグを使ったJSPページの実装例だ。画面には送信用のフォームがあり、テキストボックスひとつと送信ボタンひとつだけのシンプルなフォームである。フォーム要素を中心にStrutsのカスタムタグが使われているのが分かるだろう。html:text タグがテキストボックスに相当するタグであり、property属性の値が送信されるパラメータ名となる。ここでは、フォーム送信すると入力した値がActionFormの同名プロパティに格納される。html:submitタグはsubmitボタンに相当するものだ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト7は、入力された値を表示する画面実装例だ。bean:writeタグが画面出力を行うタグである。
ここでは、WelcomeFormというBeanのuserNameというプロパティの値を出力する、という処理が実装されている。html:linkタグはハイパーリンクを生成するタグだ。
この実装例では、forward属性によって、inputpageという名前で登録されたActionForwardを呼び出す処理が実装されている。html:linkタグでforward属性を使用するにはStruts設定ファイルの <global-forwards> 要素の設定が必要だ。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.