拦截器、过滤器、监听器各有什么作用?

分享人:韩亚博

1.背景介绍

2.知识剖析

3.常见问题

4.编码实战

5.扩展思考

6.参考文献

7.更多讨论

1.背景介绍

Listener也叫监听器,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。

对项目起到监听的作用,它能感知到包括request(请求域),session(会话域)和applicaiton(应用程序)的初始化和属性的变化;

Filter也称之为过滤器,是Servlet的一种技术,WEB开发人员通过Filter技术,可以对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html文件等进行拦截,从而实现一些特殊的功能。

对请求起到过滤的作用,它在监听器之后,作用在servlet之前,对请求进行过滤;

interceptor,又叫拦截器。在web开发中,拦截器是经常用到的功能。它可以帮我们验证是否登陆、预先设置数据以及统计方法的执行效率等等。

2.知识剖析

2.1所属

Filter、Linstener属于Servlet技术

interceptor属于框架技术,在structs、springMVC中都有各自的实现

2.2作用

监听器,从字面上可以看出listener主要用来监听之用。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。 通俗的语言说就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。

过滤器:是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。

拦截器:是面向切面编程,就是在service或者某个方法执行之前,调用一个方法,或者在方法后调用一个方法。

3.常见问题

配置的位置一样

监听器、过滤器:web.xml

拦截器:springMVC.xml

监听器的种类:八种

执行的先后顺序

执行顺序:监听器-->过滤器-->拦截器-->controller执行-->拦截器-->过滤器-->监听器

4.编码实战

演示执行过程

5.扩展思考

各自应用场景

两者的本质区别:从灵活性上说拦截器功能更强大些,Filter能做的事情,Interceptor都能做,而且可以在请求前,请求后执行,比较灵活。Filter主要是针对URL地址做一个编码的事情、过滤掉没用的参数、安全校验(比较泛的,比如登录状态之类),太细的话,还是建议用interceptor。

Filter只在Servlet前后起作用。而拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性。所以在Spring构架的程序中,优先使用拦截器。

6.参考文献

https://blog.csdn.net/Jintao_Ma/article/details/52972482

https://www.cnblogs.com/coderland/p/5902878.html

https://blog.csdn.net/hongxingxiaonan/article/details/48090075

https://www.cnblogs.com/jadening/p/5993126.html

https://blog.csdn.net/qq_36411874/article/details/53996873

https://blog.csdn.net/zcl_love_wx/article/details/52072655

7.更多讨论

分享到此结束

欢迎大家讨论