您的位置 首页 java

java拦截器、过滤器傻傻分不清?你应该这样来理解

java拦截器、过滤器傻傻分不清?你应该这样来理解

今天有童鞋问我 java 中的 Filter 过滤器、interceptor拦截器 的区别,额。。。好像这个鬼问题被回答了无数次,但我觉得能不能用更好的方式让别人理解,我们已经知道了这两个玩意儿就是两个过滤器类, 在javaweb中, 一切事物都离不开容器!

一、站在容器的角度来看,它们是这样的

java拦截器、过滤器傻傻分不清?你应该这样来理解

这里的区别在于:filter属于servlet管理,interceptor属于springmvc容器管理,基于这个特性我们可以理解一下这些区别:

  • interceptor不依赖servlet,filter依赖于servlet。
  • interceptor因为属于mvc容器只能对contrler的action请求起作用,filter则拦截所有的请求,比如对静态资源的拦截过滤。
  • 既然访问interceptor对action起作用那他就可以获取方法上下文、栈里的参数,而filter不行。
  • interceptor可以获取spring容器中的各个 bean ,而filter就不行,因为他不归spring容器管理,所以可以在interceptor里注入一个service来使用。

二、另外一点,我们来看下interceptor,filter的执行顺序:绿色表示interceptor的作用范围,可以看到它包裹了controller,黄色代表Filter 它包裹了所有

java拦截器、过滤器傻傻分不清?你应该这样来理解

可能这还不是全部,剩下的希望留给读者去细究,但从整体上我们了解了他们区别,只能说带给大家一些思考,个人理解有所纰漏,还请老铁们多多指教!

文章来源:智云一二三科技

文章标题:java拦截器、过滤器傻傻分不清?你应该这样来理解

文章地址:https://www.zhihuclub.com/176959.shtml

关于作者: 智云科技

热门文章

网站地图