专业的JAVA编程教程与资源

网站首页 > java教程 正文

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

temp10 2024-11-04 14:07:40 java教程 10 ℃ 0 评论



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

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


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



这里的区别在于: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 它包裹了所有



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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表