定义拦截器栈,先使用自定义的拦截器栈中的内容,再使用系统预定义的
<interceptors>
<!-- 定义拦截器 -->
<interceptor name="拦截器名" class="拦截器实现类"/>
<!-- 定义拦截器栈 -->
<interceptor-stack name="拦截器栈名"> 可定义多个拦截器栈
<interceptor-ref name="拦截器一"/>
<interceptor-ref name="拦截器二"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" />
将拦截器放在包中,就成了一个全局拦截器
<interceptors>
<!-- 定义权限控制拦截器 -->
<interceptor name="authority"
class="org.qiujy.common.Authorization
Interceptor" />
<!-- 定义一个包含权限控制的拦截器栈 -->
拦截器栈是对拦截器的使用
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack"
/>这是为了也使用默认的拦截器
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<!-- 定义默认拦截器 -->
<default-interceptor-ref name="mydefault" />
<!-- 定义全局处理结果 -->
<global-results>
<!-- 逻辑名为 login 的结果,映射到/login.jsp 页
面 --><result name="login">/login.jsp</result>
</global-results>
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。 2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。 3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。 4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。 5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。 过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符
原文:http://www.cnblogs.com/znsongshu/p/6282825.html