Filter过滤器 & Listener监听器

Filter过滤器

基本概念

Filter本意为”过滤“的含义,是JavaWeb的三大组件之一,三大组件:Servlet、Filter、Listener。

过滤器是向 Web 应用程序的请求和响应处理添加功能的 Web 服务组件。

过滤器相当于浏览器与Web资源之间的一道过滤网,在访问资源之前通过一系列的过滤器对请求进行修改、判断以及拦截等,也可以对响应进行修改、判断以及拦截等。

工作方式

在这里插入图片描述

Filter接口

  • 基本概念:javax.servlet.Filter接口主要用于描述过滤器对象,可以对资源的请求和资源的响应操作进行筛选操作。
常用方法功能介绍
void init(FilterConfig filterConfig)初始化过滤器
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)执行过滤操作
void destroy()销毁过滤器

FilterConfig接口

  • 基本概念:javax.servlet.FilterConfig接口主要用于描述过滤器的配置信息。
常用方法功能介绍
String getFilterName()获取过滤器名
String getInitParameter(String name)获取指定的初始化参数信息
Enumeration getInitParameterNames()获取所有的初始化操作名称
ServletContext getServletContext()获取ServletContext对象

多个过滤器的使用

  • 如果存在多个过滤器都满足过滤条件,则容器依据映射的先后顺序来调用各个过滤器。

过滤器的优点

  • 实现代码的“可插拔性”,即增加或减少某个功能模块,不会影响程序的正常执行。
  • 可以将多个相同处理逻辑的模块集中写在过滤器里面,可实现重复利用、也方便代码的维护。

Listener监听器

基本概念

  • Servlet规范中定义的一种特殊的组件,用来监听Servlet容器产生的事件并进行相应的处理。
  • 容器产生的事件分类如下:
    • 生命周期相关的事件。
    • 属性状态相关的事件。
    • 存值状态相关的事件。
  • 底层原理是采用接口回调的方式实现。

各类监听器详解

ServletRequestListener
  • 触发时机:ServletRequest创建和关闭时
常用方法功能介绍
void requestInitialized(ServletRequestEvent sre)实现ServletRequest对象的初始化
void requestDestroyed(ServletRequestEvent sre)实现ServletRequest对象的销毁
ServletRequestAttributeListener
  • 触发时机:向ServletRequest添加、删除或替换一个属性时
常用方法功能介绍
void attributeAdded(ServletRequestAttributeEvent srae)增加属性时触发
void attributeReplaced(ServletRequestAttributeEvent srae)修改属性时触发
void attributeRemoved(ServletRequestAttributeEvent srae)删除属性时触发
HttpSessionListener
  • 触发时机:当一个HttpSession刚被创建或失效(invalidate)时
常用方法功能介绍
void sessionCreated(HttpSessionEvent se)当一个HttpSession对象被创建时会调用这个方法
void sessionDestroyed(HttpSessionEvent se)当一个HttpSession超时或调用HttpSessioninvalidate()方法让它销毁时,将会调用这个方法
HttpSessionAttributeListener
  • 触发时机:HttpSession中添加、删除或替换一个属性时
常用方法功能介绍
void attributeAdded(HttpSessionBindingEvent se)当往会话中加入一个属性的时候会调用这个方法
void attributeRemoved(HttpSessionBindingEvent se)当从会话中删除一个属性的时候会调用这个方法
void attributeReplaced(HttpSessionBindingEvent se)当改变会话中的属性的时候会调用这个方法
ServletContextListener
  • 触发时机:ServletContext创建和关闭时
常用方法功能介绍
void contextInitialized(ServletContextEvent sce)ServletContext创建的时候,将会调用这个方法
void contextDestroyed(ServletContextEvent sce)ServletContext销毁的时候(例如关闭应用服务器或重新加载应用),将会调用这个方法
ServletContextAttributeListener
  • 触发时机:向ServletContext添加、删除或替换一个属性时
常用方法功能介绍
void attributeAdded(ServletContextAttributeEvent scae)ServletContext中加入一个属性的时候触发
void attributeRemoved(ServletContextAttributeEvent scae)ServletContext中删除一个属性的时候触发
void attributeReplaced(ServletContextAttributeEvent scae)改变ServletContext中属性的时候触发
HttpSessionBindingListener
  • 触发时机:HttpSession中绑定和解除绑定时
常用方法功能介绍
void valueBound(HttpSessionBindingEvent event)有对象绑定时调用该方法
void valueUnbound(HttpSessionBindingEvent event)有对象解除绑定时调用该方法
HttpSessionActivationListener
  • 触发时机:当有session数值的钝化和活化操作时
常用方法功能介绍
void sessionWillPassivate(HttpSessionEvent se)钝化操作时调用该方法
void sessionDidActivate(HttpSessionEvent se)活化操作时调用该方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值