我是这个领域的新手。当我在S2中通过拦截器基础知识时,我遇到了struts-default.xml
并且对excludeParams
列表感到有些困惑。任何人都可以向我解释下面的代码并且每个参数都很少吗?
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*</param>
</interceptor-ref>
答案 0 :(得分:2)
这是框架提供的功能之一,可让您决定是否需要所有参数或某些选定参数。
您可以使用此功能进行决定,并且在您希望在操作类中接受某些特定属性的情况下,它有时非常有用。
默认情况下Param interceptor
设置值堆栈上的所有参数。
此拦截器从ActionContext#getParameters()
获取所有参数,并通过调用ValueStack#setValue(String, Object)
将它们设置在值堆栈上,通常会导致在表单请求中提交的值应用于值堆栈中的操作。 / p>
引擎盖XWork提供MethodFilterInterceptor
,因此能够处理excludeMethods / includeMethods参数。
这是Struts2提供的处理跨站请求伪造(CSRF)的机制之一。
看看
答案 1 :(得分:0)
请参考documentation - 通过设置其excludeParams属性,可以强制此拦截器忽略参数。此属性接受以逗号分隔的正则表达式列表。当这些表达式中的任何一个与参数名称匹配时,拦截器将忽略此类参数。 Struts定义的拦截器堆栈已经排除了一些参数:
dojo\..* (anything parameter whose name contains "dojo.")
^struts\..* (any parameter whose name starts with "struts.")