- PR -

リクエストに対応したActionMappingをFilterで取得する

1
投稿者投稿内容
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-06-15 21:46
お世話になっています。
みーむと申します。

Strutsを使って開発しています。
Filter上でリクエストに対応したActionMappingを
取得したいのですが、うまくいかずに困っています。
ActionMappingを取得するために、ModuleConfigを
取得したいのですが、これも難しく未だできていません。

よろしければ、アドバイス頂けないでしょうか?
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-06-15 22:33
Servlet バージョン2.3ではFilterはHTTP RequestまたはResponseに対して働くものなので
ActionMaping等の単にフォワードされているだけの情報は取得できないような気がします。
2.4からはForwardにたいしてもFilterが効くようになるとかいう話をどこかで聞いたこともあるような気がするのですが確認はしてません。

[ メッセージ編集済み 編集者: SKT 編集日時 2004-06-15 22:35 ]
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-06-17 20:34
SKT様
お返事ありがとうございます。

みーむです。

私の説明不足をすこしフォローさせてください。
「リクエストに対応したActionMapping」ではなく、
「リクエストにこれから対応しようとしているActionMapping」です。
つまり、リクエストがアクションサーブレットに振られる前の段階で、
Filter上にて、実行が予測されるActionのActionConfigが取得したいのです。
こんなことは、できないのでしょうか?

よろしくお願いします。


[ メッセージ編集済み 編集者: みーむ 編集日時 2004-06-17 20:36 ]
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2004-06-17 22:24
引用:

「リクエストに対応したActionMapping」ではなく、
「リクエストにこれから対応しようとしているActionMapping」です。
つまり、リクエストがアクションサーブレットに振られる前の段階で、
Filter上にて、実行が予測されるActionのActionConfigが取得したいのです。
こんなことは、できないのでしょうか?


同じことを言い換えるだけですが、
ActionMappingの情報はActionServletにrequestが到達してから設定される
(struts-config.xmlから取得する)ものですから、やはりFilterでは取れないと思います。

普通に考えて、Filterの中でとれる情報(request,response,FilterConfig)から
ActionMappingをたどれないのならば取れないのではないでしょうか?

あってるかどうかの確証はありませんが。
自分ももう少し調べてみます。
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-06-22 19:48
毎回お世話になっています。
みーむです。

ActionConfig自体はstruts-config.xmlに書いてある情報なので、
ActionServletに入らなくても取得できるのかな?って思っていました。
Filter上からRequestUtilsを実行したり、Filterの実装クラスに
ActionServletをextendsさせてみたり(??)してみたのですが、
SKTさんが、おっしゃるように無理なのかも知れませんね。
もうすこし、がんばってみます。
hypergori
会議室デビュー日: 2004/01/20
投稿数: 19
投稿日時: 2004-06-22 20:33
こんなんはどうでしょう?
ActionServeletのソース見てみました。
applicationスコープにいろいろ入っているみたいなので、
他にも取れると思われます。

import org.apache.struts.*;

public class ZZZZZZZZZZZZZZ implements Filter {

ActionMappings am = (ActionMappings)
getServletContext().getAttribute(Globals.MAPPINGS_KEY);
ActionMapping a = am.findMapping(path);

}


[ メッセージ編集済み 編集者: hypergori 編集日時 2004-06-22 20:40 ]
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-06-25 18:44
hypergoriさん、
ありがとう、ございます。

その方向性で、チャレンジしてみたいと思います。
私も使用するツールのソースを読む癖をつけなくては、
いけませんね。

アドバイス感謝しています。
1

スキルアップ/キャリアアップ(JOB@IT)