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

好吧,这是框架提供的一项功能,可让您决定是否需要所有参数或某些选定参数。

您可以使用此功能来决定,它有时非常有用,您希望某些特定属性在您的操作类中被接受。

默认情况下Param interceptor设置值堆栈上的所有参数。

此拦截器通过调用从值堆栈获取所有参数ActionContext#getParameters()并将它们设置在值堆栈上ValueStack#setValue(String, Object),通常会导致表单请求中提交的值应用于值堆栈中的操作。

在 XWork 的底层提供MethodFilterInterceptor,因此能够处理 excludeMethods / includeMethods 参数。

这是 Struts2 提供的处理跨站请求伪造 (CSRF) 的机制之一。

看一下

  1. 参数拦截器
  2. 方法过滤器拦截器
于 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 回答