什么是实际排除在Struts2中的excludeParams?

时间:2012-10-05 02:44:47

标签: java parameters struts2

我是这个领域的新手。当我在S2中通过拦截器基础知识时,我遇到了struts-default.xml并且对excludeParams列表感到有些困惑。任何人都可以向我解释下面的代码并且每个参数都很少吗?

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

2 个答案:

答案 0 :(得分:2)

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

您可以使用此功能进行决定,并且在您希望在操作类中接受某些特定属性的情况下,它有时非常有用。

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

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

引擎盖XWork提供MethodFilterInterceptor,因此能够处理excludeMethods / includeMethods参数。

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

看看

  1. parameters-interceptor
  2. MethodFilterInterceptor

答案 1 :(得分:0)

请参考documentation - 通过设置其excludeParams属性,可以强制此拦截器忽略参数。此属性接受以逗号分隔的正则表达式列表。当这些表达式中的任何一个与参数名称匹配时,拦截器将忽略此类参数。 Struts定义的拦截器堆栈已经排除了一些参数:

   dojo\..* (anything parameter whose name contains "dojo.")
   ^struts\..* (any parameter whose name starts with "struts.")