Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Struts2中,excludeParams实际上排除了什么?_Java_Parameters_Struts2 - Fatal编程技术网

Java 在Struts2中,excludeParams实际上排除了什么?

Java 在Struts2中,excludeParams实际上排除了什么?,java,parameters,struts2,Java,Parameters,Struts2,我是这方面的新手。在学习S2中的拦截器基础知识时,我遇到了struts default.xml,对excludeParams列表有点困惑。有人能给我解释一下下面的代码和每个参数吗 <interceptor-ref name="params"> <param name="excludeParams">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet

我是这方面的新手。在学习S2中的拦截器基础知识时,我遇到了
struts default.xml
,对
excludeParams
列表有点困惑。有人能给我解释一下下面的代码和每个参数吗

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

dojo\..*、^struts\..*、^session\..*、^request\..*、^application\..*、^servlet(请求|响应)\..*、参数*
请参阅-通过设置其excludeParams属性,可以强制此拦截器忽略参数。此属性接受以逗号分隔的正则表达式列表。当这些表达式中的任何一个与参数名匹配时,拦截器将忽略该参数。Struts定义的拦截器堆栈已经排除了一些参数:

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

这是框架提供的一个特性,让您决定是需要所有参数还是某些选定参数

您可以使用此功能来决定,有时它确实非常有用,因为您希望在action类中接受某些特定属性

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

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

在引擎盖下,XWork提供
方法过滤器接口接受器
,因此能够处理excludeMethods/includeMethods参数

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

看看


  • Thanx对于响应,我知道它是什么以及它是如何做的。我想知道更多关于参数的信息,以及它们被列在这里的原因(如果我们没有列出它们,意味着说问题)。Struts2附带了“dojo”插件。默认情况下,如果参数的名称为“dojo”或“struts”,您将引用框架组件本身,并且不希望截取它们。因此,默认情况下,它们被配置为不被拦截。不过,它们是可配置的,因此,如果出于某种原因,您想要拦截它们,您可以很好地更改配置并执行相同的.thanx,以获得更好的解释。你也能让我对每个参数(它们的用途)了解一点吗?@Rocky\u Rony:你问的是哪些参数?你能说得更具体一点吗?Lill对这三个方面感到困惑吗?servlet(请求|响应),dojo \…*,^框架定义的struts\..*@Rocky_Rony well拦截器堆栈将它们排除在外,因为它们由框架内部使用,并且不需要通过您的操作或参数进行设置。尽管dojo现在不太相关,因为它已被弃用,但关于struts,因为这是框架正在使用的名称空间,所以设置这些值是没有意义的。servlet和应用程序上下文也是如此,因为它们是特定于应用程序的,并且被设置为S2和容器。有关完整列表,请参阅此处