Interstage Application Server Plus / Plus Developer スタートガイド
目次 前ページ次ページ

第5章 フレームワークを利用したアプリケーションの開発

5.3 HelloApcoordinatorの説明

ここでは、HelloApcoordinatorに基づいて、Apcoordinatorアプリケーションに必要な各種ファイルと動作の概要を説明します。

HelloApcoordinatorアプリケーションの各種ファイル

ここでは、HelloApcoordinatorアプリケーションの作成ウィザードによって作成されたファイルについて説明します。
HelloApcoordinatorアプリケーションでは、大きく分けて7種類のファイルが生成されます。これら7種類16ファイルの概要は次の表のとおりです。

ファイル種別

ファイル名

内容

制御ページ

main.jsp

Apcoordinatorアプリケーションでは、クライアントからのリクエストを制御ページが受け取ります。そのため、アプリケーション内には必ず一つ以上の制御ページが必要です。

ファクトリクラスの拡張

HelloFactory.java
HelloApplication.java
HelloSession.java

ファクトリクラスを拡張することで、セション管理機能やDB連携機能を使用することができます。詳しくはApcoordinator ユーザーズガイドをご覧ください。

データBean

HelloHeadBean.java
HelloBodyBean.java

入出力ページとビジネスクラスの間のデータ受渡しを行うJavaBean形式のクラスです。

ビジネスクラス

HelloHandler.java

ビジネスロジックを記述するJavaのクラスです。

入出力ページ

helloHeadPage.jsp
helloInputPage.jsp
helloOutputPage.jsp
helloError.jsp

入出力項目を持つJSPページを入出力ページと呼びます。一つの画面を複数の入出力ページで構成することができます。

関係定義ファイル

commands.map
pages.map

Apcoordinatorでは、アプリケーション内でビジネスクラス名やJSPファイル名を直接指定せずに、関係定義ファイルを用いて間接的に指定します。関係定義ファイルにはコマンドマップとページマップがあります。

その他

web.xml
ujiall.tld
hello.txt

Apworksは上記のファイルの他に3つのファイルをプロジェクト内に作成します。
web.xmlファイルはWebアプリケーションの環境定義ファイルです。アプリケーションのパラメタや、タグライブラリの場所など、Webアプリケーションの環境を定義します。
ujiall.tldはUJIタグのタグライブラリデスクリプタファイルです。UJIタグとは、Apcoordinatorが提供しているJSP拡張タグのことです。
hello.txtはウィザードで生成された各種ファイルの説明が記述されています。

上記のファイルの中で重要なのは、入出力ページ、データBean、ビジネスクラスの3つです。これら3つのファイルによってWebアプリケーションの主な構成要素である 画面、データ、ロジックを分離して作成することが可能です。次節では、これら3つのファイルがアプリケーションとしてどのように動くのかを見ていきます。

HelloApcoordinatorの動作概要

ここでは、HelloApcoordinatorの動作概要を説明します。
まずは、初期起動時の動作です。
初期起動時の動作の概念図を下図に示します。下図のように初期起動は9つのフェーズに分かれています。

次に上記の図より、具体的な動きを追っていきます。図中の番号と、その動作を下記の表に示します。

動作の名称

内容

1.リクエストの送信

まず、ブラウザから制御ページにリクエストが送信されます。

2.uji:dispatchタグの起動

制御ページに記述されてあるuji:dispatchタグから、Apcoordinatorが起動します。

3.コマンドマップから初期起動用のメソッドを検索

コマンドマップ内から初期起動用のメソッドを検索します。
初期起動では、下記の行が検索されます。
;="クラス名.メソッド名"
HelloApcoordinatorではhello.HelloHandlerクラスのstartup()メソッドが呼ばれます。

4.データBeanを領域にセット

HelloHandlerクラスのstartup()メソッド内でDispatchContextクラスのsetResponseBean()メソッドが呼ばれ、データBeanに領域名がセットされます。
そのとき、HelloApcoordinatorではデータBeanに表示モードを設定しています。
これは、複数の入出力ページに1つのデータBeanが対応している場合に用います。
入出力ページに対応した表示モードをデータBeanに設定します。ここではinputが設定されています。
これで、uji:dispatchタグの動作は終了です。

5.uji:includeタグの起動

次に、制御ページに記述されているuji:includeタグが呼ばれ、Apcoordinatorが起動します。

6.領域名からデータBean名を検索

uji:includeタグのpaneアトリビュートに記述されている領域名からデータBeanを検索します。

7.ページマップから入出力ページを検索

検索されたデータBeanをもとに、ページマップから対応する入出力ページを検索します。

8.入出力ページをuji:includeタグにセット

入出力ページがuji:includeタグのある場所にセットされます。

9.レスポンスの送信

最後に生成された表示用データをブラウザに送信します。

以上の9つのフェーズを経て、レスポンスが送信されます。ただし、5〜8はuji:includeタグの数だけ繰り返されます。

次に、ブラウザからデータが送られて来る場合を考えます。この場合は、下図のように10のフェーズに分かれます。

先ほどと同様に、上記の図より、具体的な動きを追っていきます。図中の番号と、その動作を下記の表に示します。
初期起動時と異なるのは、リクエスト受信時にデータBeanにデータがセットされ、ビジネスクラスに渡されるところです。

動作の名称

内容

1.リクエストの送信

まず、ブラウザから制御ページにリクエストが送信されます。

2.uji:dispatchタグの起動

制御ページに記述されてあるuji:dispatchタグから、Apcoordinatorが起動します。

3.データBeanにデータをセット

ブラウザから送信されたデータをデータBeanにセットします。

4.コマンドマップからメソッドを検索

コマンドマップ内からメソッドを検索します。
ここでは、HelloApcoordinatorの名前入力画面からリクエストが送信されたとします。 この場合、ブラウザからokボタンが押され、リクエスト内にHelloBodyBeanクラスのデータが格納されています。
よって、下記の記述からHelloHandlerクラスのok()メソッドが呼ばれます。
hello.HelloBodyBean;ok=hello.HelloHandler.ok
このとき、3のデータBeanがok()メソッドに渡されます。

5.データBeanを領域にセット

HelloHandlerクラスのok()メソッド内でDispatchContextクラスのsetResponseBean()メソッドが呼ばれ、データBeanに領域名がセットされます。
そのとき、HelloApcoordinatorではデータBeanに表示モードを設定しています。
これは、複数の入出力ページに1つのデータBeanが対応している場合に用います。
入出力ページに対応した表示モードをデータBeanに設定します。ここではoutputが設定されています。
これで、uji:dispatchタグの動作は終了です。

6.uji:includeタグの起動

次に、制御ページに記述されているuji:includeタグが呼ばれ、Apcoordinatorが起動します。

7.領域名からデータBean名を検索

uji:includeタグのpaneアトリビュートに記述されている領域名からデータBeanを検索します。

8.ページマップから入出力ページを検索

検索されたデータBeanをもとに、ページマップから対応する入出力ページを検索します。

9.入出力ページをuji:includeタグにセット

入出力ページがuji:includeタグのある場所にセットされます。

10.レスポンスの送信

最後に生成された表示用データをブラウザに送信します。


目次 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005