struts 2安全なfilter,urlに基づいてactionのclassおよび実行方法を取得する


私はプロジェクトの安全部分を引き継いで、前の表示の表示部分はExtjsで書いた機能モジュールの表示を実現しました.私がしなければならないのは検証です.ユーザーがリソースを要求するときにこの権限を持っているかどうか、filterを思い出しました.この技術はブラウザーがrequestを開始するたびにブロックを実現したので、aopはactionであまり機能しません.切断面を書くのは包み分けのせいで切断面を書くことができないのも一つの原因です.コードを見てみましょう
public class SecurityFilter extends
StrutsPrepareAndExecuteFilter {}
赤い部分はStrutsPrepareAndExecuteFilterを継承していますが、Filterは直接実現していません.
その理由は次のとおりです.
1,StrutsPrepareAndExecuteFilterのリソースへのアクセス
2,正常にaction要求をブロックすることができて、もし直接Filterを実现するならば、action要求を正常にブロックすることができないかもしれなくて、私がする时jpg、jsなどの静的なファイルしかブロックできません
3,webを減らす.xmlのファイル構成
コードは次のとおりです.
 ActionMapping mapping = super.prepare.
          findActionMapping(request, response, true);

まずActionMappingオブジェクトを構築します.このオブジェクトにはnamespace,methodなどの情報が含まれています.
prepareはPrepareOperationsで、このFilterのinitメソッドでsuperを呼び出す.initは正しいオブジェクトを得ることができます
Map<String, Object> extraContext
        = dispatcher.createContextMap(
                request, response, mapping, filterConfig.getServletContext());

dispatcherはDispatcherで、このクラスはactionの基本的な実行を担当して、余計な説明はありません
intで取得する;コードは次のとおりです.
[color=red]
 InitOperations init = new InitOperations();
        try {
            FilterHostConfig config = new FilterHostConfig(arg0);
            init.initLogging(config);
            this.dispatcher = init.initDispatcher(config);
        }catch (Exception e) {
            e.printStackTrace();
        }
[/color]
クラシック:
 
[color=red]Configuration config =
            dispatcher.getConfigurationManager().getConfiguration();
        ActionProxy proxy = config.getContainer().getInstance(
                ActionProxyFactory.class).createActionProxy(
                mapping.getNamespace(), mapping.getName()
                , mapping.getMethod(), extraContext, true, false);[/color]

dispatcherによって、関連する構成を取得し、actionに対応するクラス、methodなど、キー情報を含むActionProxyオブジェクトを構築します.ActionProxyはStrutsPrepareAndExecuteFilteが実行できるキーオブジェクトです.struts 2があれば実行でき、関連クラスのすべての情報を取得し、終了します.