美文网首页
(拦截器、过滤器)之扯不断理还乱

(拦截器、过滤器)之扯不断理还乱

作者: Boger_8cf1 | 来源:发表于2018-12-10 23:01 被阅读0次
今天由我给我公司的小伙伴们把公司的拦截器、过滤器、监听器、AOP梳理的以下,然后给大家一起分享了一下用途,然后又从一些问题出发延伸出来然后探讨了一番,收获颇多。夜深人静了,我现在把这些整理一下给可以看到这篇文章的小伙伴分享一下。

1.思想层面

这三个东西的思想都是AOP的思想,面向切面编程。如果不太了解AOP是什么的小伙伴可以去先搞懂这个是什么,AOP 百度百科然后再来看这篇文章。这三种东西都可以通过aop的思想去实现一些 日志记录、权限控制、事务....等一系列的操作。但是这三者有什么不同呢?他们适用于什么场景呢?

2.区别

拦截器 interceptor 和 过滤器 filter 的区别:

过滤器是属于servlet的东西是java web的三大组件之一,它定义在web.xml中,由定义的先后顺序来决定执行的先后顺序。它是基于函数调用的,依赖于servlet,可以对几乎所有请求起作用,只能在初始化时被调用一次。重要的一点是它不能获取spring 中的bean。
拦截器是由spring框架支持的,是基于java反射的,它不依赖于servlet,只对action请求起作用。在它里面可以使用spring中的bean。在一个action请求中,拦截器可以被多次调用,但是过滤器只能调用一次。
附图两张,出自这位小伙伴的文章,讲的挺不错的。

image.png
image.png

以上总结的是网上一搜都可以找到的区别。我这里再拿来使用一下,然后接下来我们讲一讲,如何在Filter中使用spring bean对象呢?
刚才在比较区别的时候已经说了Filter不能使用spring中的bean,你这里又交给我们使用这不是打脸么。。。咳咳,这不是哈,原本来说 Filter里确实不支持使用spring bean,但是你可以改造啊。改造之后就可以正确使用了。不信你看~~~


使用这个东东

在你的web.xml中配置上这个东西,然后把你的filter加上@Component,然后就可以在Filter中使用spring 的bean啦~ 是不是感觉好嗨哦?感觉人生已经到达了巅峰?
不过,爱思考的你可能又要问了。这个DelegatingFilterProxy到底是个什么东西呢? 看名字的话应该叫做 委派过滤代理。 代理?你有没有想起来你曾梦想仗剑走天涯。。。咳咳 跑偏了,代理模式记起来没有?没有?那你spring aop 总该知道把,它底层就是设计了代理模式。有两种 一种是jdk 动态代理,另一种是cglib字节码增强。有兴趣的小伙伴可以自行百度一波,这里就不展开赘述了。
然后让我们点开这个神奇的类,然后一探究竟。


这个类中所有的方法和变量 我们看到这里面有个initFilterBean()的方法,一看名字就知道是初始化的,然后点进来看一下 方法具体实现

initFilterBean()该方法主要完成两个功能:
1、找到被代理类在spring中配置的id并赋值给targetBeanName。
2、使用找到的id从spring容器中找到具体被代理的类,并赋值给delegate
initDelegate()该方法的作用是,从spring容器中获取到具体被代理的filter 
我们知道一个过滤器的主要实现在doFilter()方法中,我们来看以下这个类中的doFilter方法的实现。


方法具体实现
该方法主要是使用被代理的filter,并调用invokeDelegate方法。
然后invokeDelegate方法中主要是调用被代理的filter中实现的doFilter方法。看到这里应该大家也看明白了,可能我的知识还没有那么丰富和深厚,不过我觉得大家应该可以看得懂这个实现的过程。这篇文章应该让你对过滤器和拦截器有一点认识和了解了。

好了,就总结到这里把。希望自己能在编程这条道路上越走越远一直坚持~与君共勉,我是菠菜。

相关文章

  • (拦截器、过滤器)之扯不断理还乱

    今天由我给我公司的小伙伴们把公司的拦截器、过滤器、监听器、AOP梳理的以下,然后给大家一起分享了一下用途,然后又从...

  • 本质

    忘不掉情深四海,扯不断恩怨情仇, 这是本质。 剪不断理还乱,在莹莹挂怀中, 摆脱不掉思念, 这...

  • 无题

    我不想回家了 回家太多鸡毛蒜皮的小事了 剪不断理还乱 扯过来扯过去 毁灭吧 自生自灭去吧

  • 剪不断,理还乱

    无言独上西楼,月如钩……、剪不断理还乱是离愁……,在这乱杂的社会里,能让你的心沉静下来就是孩子天真的笑,无瑕的思想...

  • 剪不断,理还乱

  • 剪不断,理还乱。

    事情其实已经过去了很长时间了,但是自己始终没有忘却,始终不能释怀。今天从老师办公室出来,如果不是老师提醒,我都不知...

  • 剪不断,理还乱

    刘娜 焦点解决网络初级九期 驻马店 2018~04~26 坚持分享第61天 最近事情好多,好久没有带着负面情...

  • 剪不断,理还乱

    《离歌》终是被我第二次贪婪地读完,眼泪已经落满了衣服,湿了左心房。我抹着自己的眼泪却越抹越多。马卓与严舒舒的友情,...

  • 剪不断理还乱

    我自己仿佛处在暗流交错的深邃海洋,我显得那么渺小,想抓住却什么都做不到。我想想清楚弄明白,可是我做不到。不过我想坚...

  • 剪不断,理还乱

    十年青丝未竖冠, 扶摇情义难收关。 一朝情义破窗溢, 喜忧参半各自忧。

网友评论

      本文标题:(拦截器、过滤器)之扯不断理还乱

      本文链接:https://www.haomeiwen.com/subject/hwhjhqtx.html