Filter(过滤器)、Listener(监听器)——Servlet【总结】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gnosed/article/details/83240996

Filter

Filter拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据,可以改变一个请求(request)或者修改响应(respond)。用户发送请求给Servlet时,在Servlet处理请求之前,与此Servlet相关的Filter首先执行,然后才是Servlet来执行。如果一个Servlet有多个Filter,则根据配置的先后次序一次执行。Filter主要用于:

(1)访问特定资源(Web网页、JSP页、Servlet)时的身份验证

(2)访问资源的记录跟踪

(3)访问资源的转换

一个Filter必须实现接口:javax.Servlet.Filter,即实现下面几个方法:

(1)doFilter(ServletRequest,ServletResponse,FilterChain),用来实现过滤行为的方法。引入的FilterChain对象提供了后续Filter所要调用的信息。

(2)init(FilterConfig),由容器所调用的Filter初始化方法。容器确保在第一次调用doFilter()方法前调用此方法,一般用来获取在Web.xml文件中指定的初始化参数。

(3)destroy(),容器在破坏Filter实例前,doFilter()方法中的所有活动都被该实例终止后,调用此方法。

Listener

Listener用来主动监听Web容器事件(Web应用上下文创建销毁、会话对象创建销毁以及会话属性信息增删改等)通过事件监听,Listener对象可以在事件发生前、发生后进行一些必要的处理。Listener实现了Web应用的事件驱动,使得Web应用不仅可以被动的处理客户端发出的请求,而且可以主动对Web容器的变化进行响应,大大提高了Web应用的能力。

                   Listener接口                           Event类
ServletContextListener ServletContextEvent(上下文事件)
ServletContextAttributeListener ServletContextAttributeEvent(上下文属性事件)
HttpSessionListener HttpSessionEvent(HttpSession对象的生命周期事件)
HttpSessionActivationListener
HttpSessionAttributeListener HttpSessionBindingEvent(会话绑定事件)
HttpSessionBindingListener
ServletRequestListener ServletRequestEvent(Request的生命周期事件)
ServletRequestAttributeListener ServletRequestAttributeEvent(Request属性变化事件)
javax.servlet.Asynclistener asyncEvent(异步处理事件)

利用上面的9类Listener接口,Web应用实现了对Web容器的请求、会话及其应用上下文三个层面上的事件的监听处理。除了HttpSessionBingListener接口和AsyncListener接口,其它所有关于Listener的配置信息都存储在Web应用的部署描述文件Web.xml中,Web容器通过此文件中的信息来决定当某个特定事件发生时,将自动地创建对应的Listener对象的实例并调用相应的接口方法进行处理。

扫描二维码关注公众号,回复: 3747901 查看本文章

猜你喜欢

转载自blog.csdn.net/gnosed/article/details/83240996