作者:小杨家的Tomcat 链接:https://www.nowcoder.com/discuss/542072?toCommentId=7862028 来源:牛客网 ## 过滤器和拦截器的区别 1 拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2 过滤器是servlet规范规定的,只能用于web程序中,而拦截器是在spring容器中,它不依赖servlet容器。 3 过滤器可以拦截几乎所有的请求(包含对静态资源的请求),而拦截器只拦截action请求(不拦截静态资源请求)。 4 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 5 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。 6 拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。 7 拦截器是被包裹在过滤器之中。