ECサイト構築パッケージOpen-EC ECサイト構築パッケージOpen-EC
会社について BlastJについて パートナー コンタクト

フレームワークとパターン化

バリデータの拡張

リクエストプロセッサとは?

リクエストプロセッサと拡張

MVCモデルと再利用

Eclipseとは


BlastJトップへ戻る

SEO機能付きCMS NEW
次世代WebDB開発言語Alinous-Core

ほぼHTMLとSQLだけでアプリケーション開発。
EclipseプラグインによるGUIデバッガ搭載
今すぐ無料ダウンロード


CROSSFIRE O/R
無料ダウンロード

WEB+DB PRESS VOL.27
BlastJ紹介記事連載掲載がスタートしました。
SoftwareDesign2005年6月号
BlastJ紹介記事が掲載されました。
JavaWorld2005年5月号のNews & ProductsのコーナーでBlastJが紹介されました
SIパートナー

業界TOPクラスのJavaエキスパートによる一括請負サービスを提供いたします。

採用のページはこちら
Webデザイン制作 Mer Design




リクエストプロセッサと拡張

RequestProcessorの拡張は、ほぼStrutsの拡張
RequestProcessorは、ほぼStrutsの本体であると、前回書きました。つまりRequestProcessorは、Strutsの拡張仕方と密接な関係があると言うことです。

さらに言ってしまえば、org.apache.struts.action.RequestProcessorクラスの派生クラスとして、カスタムのRequestProcessorを作り、struts-config.xmlファイルでカスタムのRequestProcessorを使うよう設定すれば、Strutsの拡張フレームワークを作ることが出来ます。

今回は、RequestProcessorの本体であるprocess()メソッドについて見ていきます。
Process()メソッドの処理
process()メソッドの処理は、大まかに見て、以下の図のようになります。

Strutsの内部

中でも、次の処理は、RequestProcessorクラスのprotectedメソッドとして記述されています。
このメソッドをカスタムRequestProcessorクラスでオーバーライドすることにより、Strutsの各機能を拡張することが出来ます。
処理 オーバーライドするメソッド 説明
処理5 processPreprocess() ActionMappingの取得前のタイミングでカスタムの処理を加えたい場合にオーバーライドする。
デフォルトではtrueを返すだけ。
処理6 processMapping() リクエストされたPathから判断して、ActionMappingクラスのオブジェクトを取得する。(このメソッドが、オブジェクトを返す)
カスタムのActionMappingを使用する際にはstruts-config.xmlで設定できるので、特別な場合わけがいる場合のみ実装しましょう。
処理7 processRoles() ActionMappingと絡めて、独自のセキュリティールールを定義したい場合にオーバーライドする。
ただ、大抵の場合はActionMappingのgetRoleNames()メソッドのオーバーライドでことが足りそうです。
処理12 doForward() 実際にフォワード処理をするためのメソッドです。
タイル処理を実装しているorg.apache.struts.tiles.TilesRequestProcessorクラスでは、一度処理されたリクエスト用(タイルの中身)のために、フォワードではなくインクルードにする場合わけが実装されています。

上に挙げたメソッドが主な拡張の場所になります。

ただ、なるべくは、processPreprocess()以外のメソッドは、やむを得ないとき以外はオーバーライドしないようにすべきでしょう。
しかし、いじることが全くないかというと、そうでもなく、通常の拡張ではつじつまが合わないところをあわせるために必要なこともあり、かなり上級者向けです。

ここで言える事は、ほとんどのケースでは、processMapping()メソッドで、カスタムのActionMappingクラスを取得するようにすれば、かなりStrutsフレームワークを意のままに、そしてスマートに拡張出来るということです。

次回は、カスタムのActionMappingについて書きます。




COPYRIGHT (C) 2005 CROSSFIRE JAPAN INC. All Right Reserved