### Weberフレームワークへようこそ

Weberフレームワーク（以降Weberと呼びます）は、Itscoolプロジェクトが開発している オープンソースのソフトウェアで、Webアプリケーションの開発に必要となる諸機能を 提供するフレームワークです。

Weberの基本機能はユーザからのリクエストを受信し、開発者が用意する適切なアクション クラスに割り当て、実行結果を元に遷移先の画面を呼び出すことです。

WeberはMVCというソフトウェア設計モデルに基づいて開発しています。
これによりWeb画面と業務ロジックを分離し、それぞれの関連をWeberが吸収することによって、 役割に応じた開発を個々に行うことができます。

また、Webアプリケーションの開発で必要となる認証機能やトランザクション管理機能、 暗号化機能もフレームワークの一部として提供していますので、 Webアプリケーションの開発では業務処理に専念することができます。

Weberの基本動作は以下の通りです。
まず、クライアントから発生したリクエストは、まずControllerの機能を請け負う FrontServletクラスが受け取ります。
このFrontServletはMVCモデルのCの役割を持つコンポーネントです。
Weberは、ひとつのアプリケーションで一つのFrontServlet クラスが全てのリクエストを処理します。
FrontServletはこのフレームワークで使用される各コンポーネントを連携させ アプリケーション全体の制御を行うコンポーネントですが、開発者は原則として 直接扱う必要はありません。

FrontServletクラスとそのほかの主要なクラスの相関関係を以下に図示します。

【FrontServletと関連するクラス】

+--------+ (1)　+------------+　　　+----------+ |　　　　|----->|　Front 　　| (2)　|　Action　| |　Web 　| (7)　|　Servlet 　|----->|　Mapping | |　　　　|<-----|　　　　　　|　　　|　　　　　| +--------+　　　+------------+　　　+----------+ A 　|　| | 　|　| | 　|　|(3)+------------+ | 　|　+-->|　　　　　　| | 　|　　　|　 Bean　 　|<---+ | 　|　　　|　　　　　　|　　| | 　|　　　+------------+　　| | 　|　　　　　　　　　　　　|(5) | 　| (4)　+------------+　　| | 　+----->|　　　　　　|　　| | 　　(6)　|　 Action 　|----+ +----------|　　　　　　| +------------+

ActionMappingクラスは、Web画面(入力)と業務ロジック(Action)及びWeb画面で 入力されたリクエストパラメータを保持するBeanクラス、結果表示用のWeb画面(出力) との関連を保持するクラスです。
これらの関連情報はあらかじめXML形式で記述された外部ファイルに記述しておき、 Webアプリケーション起動時にActionMappingクラスに展開されます。

Actionクラスは、業務処理部分を担当します。
アプリケーション開発者は、このクラスを継承し、それぞれの業務に応じた処理を 記述することになります。

Beanクラスは、リクエストパラメータを保持するクラスです。
このクラスはPOJOなクラスとして作成することにより、業務処理部分や永続化層 において中立なインターフェースを提供することができます。
これは業務処理部分や永続化層にJ2EE仕様(あるいはWeberフレームワークの仕様) の混在を防ぎます。

以下にWeberを利用した場合の業務処理の流れを記します。

【処理の説明】

No | 説明
1 | クライアントから発生したリクエストはFrontServletクラスが受け取ります
2 | FrontServletはクライアントから受け取ったリクエストURIを元にActionMapping を取得します ActionMappingにはリクエストURIに関連するActionクラス名及びフォームBean名 が登録されています
3 | FrontServletクラスはActionMappingクラスからBeanオブジェクトを生成し、 クライアントからのリクエストパラメータをBeanオブジェクトにセットします
4 | FrontServletクラスはActionMappingクラスからActionを生成します。 次に生成したActionに対してexecuteメソッドを実行します。 executeメソッドの引数には、フォームBeanの他にHttpServletReqeust インスタンスやHttpServletResponceインスタンスも含まれます
5 | ActionクラスはクライアントからのリクエストパラメータをBeanオブジェクト から取得します
6 | リクエストパラメータに従って、ビジネスロジックを処理します Actionの実行結果をFrontServletに返却します
7 | FrontServletはActionの実行結果からJSP(HTML)ページを作成し、 クライアントに処理結果表示画面を返します。