监听器与过滤器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

监听器与过滤器

监听器简介

什么是监听器

1.能监听某个对象的状态变化的组件

2.监听域对象的变化

监听器相关的概念

1.事件源:被监听的对象- request、session、servletContext

2.监听器:监听事件源的对象- 8个监听器

3.注册监听器:监听器与事件源相绑定

4.响应行为:监听到事件源变化时,去做什么事情

监听器划分

1.三个监听域对象的创建与销毁ServletContextListener

HttpSessionListener

ServletRequestListener

2.三个监听域对象当中属性变化ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

域监听器

ServletContext域监听器监听ServletContext域的创建与销毁的监听器ServletContextListenerServletContext域生命周期:服务器启动创建、服务器关闭销毁监听器的编写步骤:

1.编写一个监听器类去实现监听器接口

2.覆盖监听器的方法

3.需要在web.xml中进行配置

作用

1.初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化

2.加载一些初始化的配置文件

3.任务调度

HttpSessionListener

监听HttpSession域的创建与销毁的监听器HttpSessionListener

HttpSession的生命周期:第一次调用request.getSession时创建、服务器关闭session 过期或手动销毁

应用场景:记录访问人数

过滤器介绍

什么是过滤器

1.filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行

2.可以对目标资源访问前后进行逻辑处理

过滤器编写步骤

1.编写一个过滤器的类实现Filter接口

2.实现接口中尚未实现的方法(主要是DoFilter方法)

3.在web.xml中进行配置(主要是对哪些资源进行过滤)

示例:

web.xml中的配置

访问一个资源的时候,会被过滤器拦截

要在过滤器当中进行放行之后后,才能够访问到对应的servlet chain.doFilter(req,res)

过滤器的访问流程

1.在发送一个请求时,web容器会先到filter当中,创建三个参数:res、req、chain

2.在过滤器中,放行之后,才能访问到对应的资源

3.中间的过滤可能有多个,在一个过滤器中,可以调用另外一个过滤器

4.也有可能过滤器没有拦截所有资源,有些资源可以直接被访问

filter的生命周期

init方法

当filter对象创建时调用

当服务器启动时创建。因为有可能一个filter对应多个servlet,启动时先把filter准备好,访问资源时就可以进行过滤了。

参数filterconfig

1.可以获取当前filter对象的配置信息

2.和servletConfig差不多,获取名称、参数

3.获取servletContext对象

4.先有的ServletContext

dofitter方法

当匹配到mapping时调用fitter

参数:res、req、filterChain

filterChain:过滤器链对象,内部维护者各个filter的索引,并且知道所有filter的顺序,是根据mapping的顺序来执行的

destroy方法

当filter对象销毁时调用,关闭服务器时销毁对象,和servletContext的生命周期是一样的。

配置

mapping - 完全匹配、目录匹配、扩展名匹配

servlet_name

1.可以把路径直接指定某一个servlet

2.可以有多个servlet_name

3.开发中基本使用的都是mapping

dispatcher

配置请求的形式,不是请求方式,是页面跳转的形式

形式分类:

REQUEST 默认值,代表直接访问某个资源时执行filter

ERROR 发生错误时,进行跳转是执行filter

INCLUDE 包含资源时执行filter

FORWARD 转发时才执行filter

老九学堂会员社群出品作者:柳成萌

相关文档
最新文档