2

私はこの分野の初心者です。S2 でインターセプターの基本を調べているときに、リストに出くわしstruts-default.xml、少し混乱しました。excludeParams以下のコードと、各パラメーターについて少し説明できる人はいますか?

<interceptor-ref name="params">
                <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
4

2 に答える 2

2

これは、フレームワークによって提供される機能の 1 つで、すべてのパラメーターが必要か、選択したパラメーターが必要かを決定できます。

この機能を使用して決定することができ、特定のプロパティをアクション クラスで受け入れたい場合に非常に役立つ場合があります。

デフォルトParam interceptorでは、値スタックのすべてのパラメーターを設定します。

このインターセプタは、 からすべてのパラメータを取得しActionContext#getParameters()、 を呼び出して値スタックに設定しますValueStack#setValue(String, Object)。通常、フォーム リクエストで送信された値が値スタックのアクションに適用されます。

内部でXWork が提供するためMethodFilterInterceptor、excludeMethods / includeMethods パラメーターを処理できます。

これは、クロスサイト リクエスト フォージェリ (CSRF) を処理するために Struts2 によって提供されるメカニズムの 1 つです。

見て

  1. パラメーターインターセプター
  2. MethodFilterInterceptor
于 2012-10-05T03:09:28.137 に答える
0

ドキュメントを参照してください- このインターセプターは、excludeParams 属性を設定することで、強制的にパラメーターを無視することができます。この属性は、正規表現のコンマ区切りリストを受け入れます。これらの式のいずれかがパラメーターの名前と一致する場合、そのようなパラメーターはインターセプターによって無視されます。Struts によって定義されたインターセプター スタックは、いくつかのパラメーターを既に除外しています。

   dojo\..* (anything parameter whose name contains "dojo.")
   ^struts\..* (any parameter whose name starts with "struts.")
于 2012-10-05T02:51:52.547 に答える