监听器与过滤器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
老九学堂会员社群出品作者:柳成萌