日期:2014-05-17  浏览次数:20606 次

在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放后面的配置做法不就错了嘛..但事实是对的..
所以我的看法是除了加载顺序不同之外..执行起来没什么不同..欢迎大家讨论
------解决方案--------------------
正在学习当中……