|
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エキスパートによる一括請負サービスを提供いたします。
採用のページはこちら。 |
|
|
|
リクエストプロセッサと拡張
RequestProcessorの拡張は、ほぼStrutsの拡張
RequestProcessorは、ほぼStrutsの本体であると、前回書きました。つまりRequestProcessorは、Strutsの拡張仕方と密接な関係があると言うことです。
さらに言ってしまえば、org.apache.struts.action.RequestProcessorクラスの派生クラスとして、カスタムのRequestProcessorを作り、struts-config.xmlファイルでカスタムのRequestProcessorを使うよう設定すれば、Strutsの拡張フレームワークを作ることが出来ます。
今回は、RequestProcessorの本体であるprocess()メソッドについて見ていきます。
Process()メソッドの処理
process()メソッドの処理は、大まかに見て、以下の図のようになります。

中でも、次の処理は、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について書きます。
|