Filter和拦截器

 拦截器:

   在Struts2中出现的概念。

        Struts2与Struts1相比,去掉了很多概念:ForwardAction,ActionMapping,ActionForm,Action的继承也变的可有可无(如果不声明拦截器等Struts2中特有的东西)。

        但是去掉了,不代表没有,只是在使用的时候,不会看到这些类的存在。若是你细细对比,在Struts2中你会找到他们的身影的。

        但是Struts2多了拦截器的概念,这个概念类似于Filter,Struts2的架构其实就是基于拦截器的。

        在Struts2中,还有一个概念:拦截器链(interceptor-stack)。有关于上次文件的、多选、静态参数、国际化等等好多个默认拦截器,当然也可以自己手动写拦截器。

Filter和拦截器有什么区别和联系?

        二者都是运用了AOP的思想,都让系统变的可配置。

        1.拦截器是基于java的反射机制,而过滤器是基于函数毁掉。

        2.拦截器不依赖servlet容器,过滤器依赖于servlet容器。

        3.拦截器只能对action起作用,而过滤器可以对几乎所有的请求起作用(可以保护资源)

        4.拦截器可以访问action上下文,、堆栈里面的对象,而过滤器不可以。

        执行顺序:过滤前-拦截钱-Action处理-拦截后-过滤后。

原文地址:https://www.cnblogs.com/snow1314/p/5255588.html