チュートリアル : WEBアプリケーションの開発 05/19/03 09:45:01 |
このレッスンでは、データを表示するStrutsカスタムタグ、およびStrutsアクションを処理するJavaコードについて学習します。 設定ファイルで、コントローラがアクションについて認識しなければならない内容についても指定します。
注記: このレッスンでは、配備およびテストのエクササイズ用にJ2EEアプリケーションサーバを実行する必要があります。
Proverbsアプリケーションのアクティビティの1つには、今日のことわざの表示があります。 ユーザが[Today痴 Proverb]リンクを選択すると、URLtoday.doがサーバに送信されます。 コントローラは、このURLを認識し、Struts処理を呼び出します。 コントローラは、適切なことわざを使用してデータオブジェクトを設定するTodayActionクラスで、メソッドを呼び出します。 コントローラは、返される値に基づき、JSPページを選択してユーザにこのデータを表示します。
ことわざのデータを処理するため、アプリケーションには次の項目があります。
1つのことわざに対するデータを保持する「Proverb Beanクラス」 このプロパティは、proverbsデータベーステーブルの列に対応します。
メソッドによってデータベースを照会し、1つまたは複数のProverb Beanのコレクションを返す「ProverbDataAccessクラス」
ProverbDataAccessでgetTodaysProverb()メソッドを呼び出し、データを使用できるようにする「TodayActionクラス」
TodayActionクラスおよびtoday.jspをリクエストURLに結合するStruts設定ファイルの「アクション要素」
ビジネス論理をアプリケーションの流れから切り離しておくため、データアクセスメソッドはProverbDataAccessクラスで分離されています。つまり、アプリケーションのどのActionクラスでも、データベースは直接照会されません。
このエクササイズでは、ProverbDataAccessクラスが、どのようにデータベースを照会し、Proverbクラスを使用して取得したデータのJavaコレクションを作成するか確認します。
Workbenchのナビゲーションペインで、Proverb.javaファイルを検索して開きます。
これは、アーカイブレイアウトでは、[WEB-INF/classes]ディレクトリの[proverb]フォルダにあり、 ソースレイアウトでは、[src]ディレクトリ下にあります。
復習 Lesson 1, MVCアプリケーションのアーキテクチャでは、Strutsでコントローラを使用してURLを処理する方法について説明しました。 設定ファイルstruts-config.xmlは、コントローラを設定して、各アクションに対して使用する処理をコントローラに命令します。 Javaクラスは処理を実行して、JSPページでは、ユーザに結果を表示します。
Strutsアプリケーションの次の場所でアクションを設定し、サポートします。
場所 |
説明 |
---|---|
web.xml (配備記述子) |
サーブレットマッピングでは、コントローラで処理するURLを指定します。 Proverbsでは、コントローラは*.do形式ですべてのURLを処理します(URLに対するサーブレットマッピングは、 EXERCISE 4-7: サーブレットマッピングを追加するですでに指定しています)。 |
struts-config.xml |
アクション要素で、URLおよび表示するJSPページに応答するActionクラスを特定します。 |
Actionクラス |
Struts Actionクラスを拡張するJavaクラスで、JSPページの設定を実行します。 |
ActionFormクラス |
JSPページにフォームが含まれる場合、Struts ActionFormクラスを拡張するJavaクラスがインスタンス化され、各フォームフィールドに対するデータが保持されます。 |
ActionMappingsクラス |
Struts ActionMappingsクラスを拡張するJavaクラスで、すべてのアクションで使用するforwardキーワードのプロパティを定義します。 |
JSPページ |
ユーザに表示するデータは、Actionクラスのコードで生じた状況に応じて異なる場合があります。Actionクラスにより、表示するJSPページを示す値がコントローラに返されます。 |
Lesson 3, プロジェクトおよびアーカイブの操作では、Struts JARおよびタグライブラリをプロジェクトに追加し、これらをアーカイブの特定の場所に割り当てました。 Strutsコードを処理するためには、これらが必要となります。
このレッスンの内容 todayアクションを設定し、関連付けられたActionクラスおよびJSPページを参照します。 このアクションには、Formクラスはありません。 このレッスンで実行する内容は、次のとおりです。
Struts設定ファイルには、コントローラが特定のアクションパスでURLを受信した際に発生する状況を指定するアクション要素が含まれます。 アクション要素は、発生する処理、および次に表示するページを指定します。 コントローラは、このファイルを読み込み、実行しなければならない処理を判断します。
<action path="/actionname" type="actionclass" > <forward name="keyword" path="/target.jsp"/> <forward name="keyword" path="/target.jsp"/> </action>
todayアクションにおけるアクションの属性および要素の使用法は、次の表のとおりです。
各アクションに対する属性値を示した表は、アプリケーションの仕様を作成する上での便利な計画ツールです( Strutsでのアクションの処理方法を参照)。 希望する場合は、その形式でtodayアクションに対して表を作成できます。
このエクササイズでは、設定ファイルにアクションを追加します。この設定ファイルは、URL today.doの取得時に実行すべき処理をコントローラに命令します。
注記: Workbenchの/docs/tutorial/TutorialFiles/proverbsディレクトリにあるCutAndPasteCode.txtファイルから、このエクササイズ用のXMLをコピーできます。 [File]>[Open]の順に選択して、ファイルを開きます。
Workbenchのナビゲーションペインで、struts-config.xmlを検索して開きます。 これは、WEB-INFディレクトリ内にあります。
action-mappings要素内で、このXMLを次のように入力します。
<action path="/today" type="com.proverb.TodayAction" > <forward name="success" path="/today.jsp"/> <forward name="failure" path="/index.jsp"/> </action>
(オプション) web.xmlを開き、サーブレットマッピングを確認します。 アクションサーブレットですべてのURLを*.do形式で処理するよう指定されています。 ファイルを閉じます。
TodayActionの処理は簡単です。コントローラサーブレットの初期化時にサーブレットコンテキストに保存された、アプリケーションのDataSourceオブジェクトを取得した後、ProverbDataAccessでメソッドを呼び出して今日のことわざを取得します。
このエクササイズでは、TodayActionクラスを参照します。このクラスは、ProverbDataAccessからコレクションを取得してJSPページに対して使用できるようにします。
Workbenchのナビゲーションペインで、TodayAction.javaファイルを検索して開きます。
注記: Javaファイルは、どの場所にあるでしょうか? アーカイブレイアウトでは、WEB-INF/classesディレクトリ下にあり、 ソースレイアウトでは、srcディレクトリ下にあります。
perform()メソッドでサーブレットコンテキストからDataSourceオブジェクトを取得するコードを検索します。
ServletContext ctxt = servlet.getServletContext(); DataSource ds = (DataSource) ctxt.getAttribute(Constants.DB_KEY);
ProverbDataAccessクラスをインスタンス化し、getTodaysProverb()メソッドを呼び出すコードを確認します。 コンストラクタでは、DataSourceオブジェクトが引数として予期されます。
ProverbDataAccess pda = new ProverbDataAccess(ds); if (pda != null) pvbs = pda.getTodaysProverb();
リクエストでpvbsコレクションを保存するコードを検索します。
request.setAttribute(Constants.PVB_KEY, pvbs);
Constants.javaを開き、PVB_KEYの値を確認します。 JSPページは、この値を使用してコレクションを参照します。
データ取得が成功した場合、perform()メソッドはsuccessというActionForward値を返します。
fwd = "success"; ... return (mapping.findForward(fwd));
これは、どのJSPページを表示するかコントローラに命令します。
Strutsでは、HTMLでの表示形式をデータの集合に適用できるカスタムタグが提供されており、 取得する項目の数を、事前に把握する必要がなくなります。
このエクササイズでは、today.jspがどのようにコレクションにアクセスし、毎日のことわざを表示するか確認します。
編集ペインで、strutslogic:iterateタグを検索します。
<strutslogic:iterate name="ProverbCollection" id="pvb">
TodayActionがリクエストで設定したProverbCollection属性を使用します。
name属性の値は何でしょうか? これは、Constants.javaのPVB_KEYの値です。
iterateタグ内で、writeタグを検索します。 これは、複数あります。
<strutsbean:write name="pvb" property="text" />
各writeタグで、property属性はProverbクラスのプロパティを参照します。
プレインテキストのメッセージタグへの変換 データのh2テキストおよびテキストラベルは、このファイルでは単に英語のテキストです。 このアプリケーションを各国対応用にする場合、Strutsメッセージタグを使用して、これをどのように修正すればよいでしょうか?
ヘッダのテキストは、すでにApplicationResources.propertiesファイルの一部になっています。 次のメッセージタグでヘッダのテキストを置き換えることができます。
<strutsbean:message key="page.today.title"/>
データラベルについては、リソースファイルにキーおよびテキストを追加してから、JSPページでこれらのキーを参照する必要があります。
Strutsメッセージタグの使用の詳細については、 Strutsによる各国対応およびローカリゼーションの有効方法を参照してください。
データアクセスをテストして、today.jspでことわざのデータが表示されるか確認できる段階に達しました。 Lesson 4, ウェルカムページの配備およびテストでサーバプロファイルを定義し、配備設定を指定した際に、初回配備時の配備設定を行いました。 この時点で必要な作業は、作成して配備することだけです。
Workbenchで、[Project]>[Build and Archive]の順に選択します。
[Output]ペインの[Build]タブでエラーが表示されないようにします。
メニューから[Project]>[Deploy Archive]の順に選択します。
[Output]ペインで、簡単な作成出力が表示された後、[Deploy]タブに切り替わり、進行状況を知らせるメッセージが表示されます。 エラーが表示されないようにします。
ブラウザが実行されている場合、新しいブラウザウィンドウを開きます。 ブラウザが実行されていない場合は、今すぐ起動します。
アプリケーションのURLを入力します。 SilverStreamサーバの一般的なURLは、次のとおりです。
http://localhost/ProverbsCloud/ProverbStart/index.jsp
アプリケーションメニューで[Today痴 Proverb]をクリックします。
ページにことわざが表示された場合、todayアクションを正常に設定したことになります。おめでとうございます。
動作しない場合 ことわざが表示されず、代わりにエラーが表示された場合、サーバ配備情報、配備記述子、およびStruts設定ファイルを再検査して、これらが正しいことを確認する必要があります。 次の処理を行うコードをチェックすることもできます。
ヒント: エラーメッセージに対するサーバコンソールをチェックします。 サーバ固有のエラー がある場合、コードの編集が必要な場合があります。
アプリケーションの開発 このレッスンでは、Proverbsチュートリアルアプリケーションの次の部分を作成するか、次の部分について学習しました。
Workbenchツールの使用 Workbenchで、次のツールを使用しました。
次のレッスン 次のレッスンでは、ユーザからの検索条件をフォームで取得する方法、およびStrutsのサポート機能を使用してフォームを処理する方法について学習します。
チュートリアル : WEBアプリケーションの開発 05/19/03 09:45:01 |
Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC, a wholly owned subsidiary of Novell, Inc. All rights reserved.