当前位置: 代码迷 >> Java Web开发 >> 在Struts2 如果有多个拦截器栈顺序写错会有什么不同?解决方案
  详细解决方案

在Struts2 如果有多个拦截器栈顺序写错会有什么不同?解决方案

热度:3005   发布时间:2013-02-25 21:10:08.0
在Struts2 如果有多个拦截器栈顺序写错会有什么不同?
XML code
<interceptors>             <interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>                      <interceptor-stack name="myInterceptorStack">                 [color=#FF0000]<interceptor-ref name="myInterceptor"></interceptor-ref>                 <interceptor-ref name="defaultStack"></interceptor-ref> [/color]            </interceptor-stack>         </interceptors> 

在红色地方这个如果这样写
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="myInterceptor"></interceptor-ref>



------解决方案--------------------------------------------------------
学习中。。。。
------解决方案--------------------------------------------------------
这就是执行先后顺序上的问题,放前放后看你自己的要求了,硬要说有什么不同,还真知道去怎么解释
------解决方案--------------------------------------------------------
影响拦截顺序 也就影响了拦截器里处理的东西

具体影响了什么 去参看具体拦截器的代码
------解决方案--------------------------------------------------------
学习来了
------解决方案--------------------------------------------------------
就是程序执行的顺序。看耦合性了。要是对前interceptor 有依赖,就错呗。个人见解,因为我菜嘛
------解决方案--------------------------------------------------------
本人看法是
..defaultStack是struts的默认拦截栈..我们所配置上去的拦截栈都得建立在它的基础上.所以得在堆栈里配置 <interceptor-ref name="defaultStack"></interceptor-ref> 
说有顺序有什么不同呢?这个应该牵涉到struts是如何解析xml文档的了..
在struts随着程序启动的时候..开始解析xml拦截栈配置..但是.是一次性地解析..,然后将配置信息存放到map里面..如果配置修改后.也得等到程序重新启动.再加载一次才生效..以后使用到配置里的信息再从map里取...如果是影响到执行顺序的话..也不可能.因为我们配置的stack对defaultStack有依赖性.以上defaultStack放后面的配置做法不就错了嘛..但事实是对的..
所以我的看法是除了加载顺序不同之外..执行起来没什么不同..欢迎大家讨论
------解决方案--------------------------------------------------------
正在学习当中……
  相关解决方案