Strutsの動き

フレームワーク覚えたてのときって、中の動きまで覚えませんでした。

おおざっぱにはこんな仕組みで動いてるけど細かい中身は知らない。
偉い人が上手いことやってくれるから知らない。
とりあえず、業務ロジックを動かすためには
この設定ファイルにあんなことやこんなことをかいて、
こういうクラスを作ればおk!

みたいな軽い気持ちでいじっていました。
(実際にそれで十分使えましたし、Webアプリケーションを作れました)

ですが、フレームワークを独自拡張するなど、
実際深く開発に携わる立場になってくると、
そういう簡単な理解だけではダメな部分が出てきました。

なので、まだまだ軽い段階ですが、おさらいしました。

基本は、WebアプリケーションなのでServletがいる

前々回の日記で書いた通りStrutsを使ってるといえども
れっきとWebアプリケーションなので、サーブレットがいます。
Strutsが用意している共通のサーブレットをActionServletという。
このServletが全ての入り口と出口を司る。
このクラスが呼ばれると、同じくStrutsが用意しているリクエスト処理用のクラスRequestProcessorが呼ばれる。

次はRequestProcessor

RequestProcessorは、ActionMappingやActionFormを設定し(必要であれば)バリデーションチェック等を行い、Actionクラス(業務ロジック)を呼び出す。
process()というメソッドから、localeを決めるprocessLocale()や、
ActionMappingのインスタンスを生成するprocessMapping()や、
バリデーションチェックを行うprocessValidate()などが呼ばれる。

業務ロジック(Action)

Actionクラスのexecuteメソッドが、実行される。
ここに業務ロジックを記述し、最終的にActionForwardクラスのオブジェクト返却する。
すなわち、この時return文に書いたものが、RequestProcessorへ返却れる。

RequestProcessorに戻って遷移

RequestProcessorは、返却されたオブジェクトの情報を元に
クライアントに情報を返却する。

ということで、二重遷移防止にトークンを置いてチェックするための処理や、Actionクラスを呼ぶ前にしておきたいこと、追加でログを週力したい…等があれば、このRequestProcessorを拡張すると良い。