Listener&Filter

一、什么是监听器

监听器就是监听某个对象的的状态变化的组件
事件源:被监听的对象 —– 三个域对象 request session servletContext
监听器:监听事件源对象 事件源对象的状态的变化都会触发监听器
注册监听器:将监听器与事件源进行绑定
响应行为:监听器监听到事件源的状态变化时 所涉及的功能代码

二、监听器有哪些(共有八个)

第一维度:
按照被监听的对象划分:ServletRequest域,HttpSession域,ServletContext域

第二维度:
监听的内容分:监听域对象的创建与销毁的,监听域对象的属性变化的
这里写图片描述

三、监听三大域创建、销毁和属性变化的监听器

监听域对象创建与销毁

ServletContextListener
contextInitialized(ServletContextEvent sce):监听域创建
contextInitialized(ServletContextEvent sce):监听域销毁
监听器编写步骤:
1.编写一个监听器类去实现监听器接口
2.覆盖方法
3.web.xml中需要进行配置(注册监听器)
作用:
1.初始化工作。可以在监听创建的代码块中做一些准备工作(contextInitialized方法中)
2.加载初始化的配置文件。——spring的配置文件
3.任务调度(定时器:java.util.Timer。TimerTask是接口,定义了定时执行的动作

监听域对象的属性变化

基本相同。实现接口后有三个方法:分别监听修改属性,添加属性,删除属性。

四、另外两个监听器

1、与session中绑定的对象相关的监听器(对象感知监听器)

由session中被绑定的对象的状态来分类:
(1)绑定和解绑:一个对象被放到session域中和被移除。(add和remove)

HttpSessionBindingListener有两个方法:valueBound()、valueUnbound()

该接口由被放进session或移除的对象来实现。(例如绑定在实体Person类中)不需要web.xml中配置。
(2)钝化与活化:将session内存中的对象持久化(序列化)到硬盘;将磁盘上的对象恢复到内存中。

HttpSessionActivationListener()两个方法:sessionWillPassivate()钝化、sessionDidActivate()活化

服务器正常关闭时session数据会钝化。服务器再次启动后会活化。

tips:如果数据需要被持久化(序列化)到磁盘上必须实现Serializable接口。这是一个标志接口,接口内部是空的。


过滤器Filter

用来过滤客户端访问目标资源,符合要求的就放行,不符合要求的过滤掉。并且能对访问目标资源前后进行逻辑处理。
简要步骤:
编写类实现filter接口,实现相应方法,并在web.xml中配置要对哪些资源进行过滤。

一、Filter的API

init()
doFilter()参数中有FilterChain对象,FilterChain接口中有doFilter方法,该方法是对访问某资源这个动作放行。
destroy()

二、配置

在web.xml中配置,基本配置类似servlet的配置:<filter>和<filter-mapping>

< filter-mapping>中的可选配置有:
(1)< servlet-name>(配置要添加过滤器的目标资源,作用同url,只不过url可以目录匹配或扩展名匹配达到给多个资源配置过滤器的作用)
(2)< dispatcher>(访问的方式)
REQUEST 默认值,代表直接访问某资源(如果资源1转发给了资源2,则过滤器第二次不会执行)
FOWARD 重定向访问某资源
INCLUDE 包含资源时访问
ERROR 发生错误页面跳转时执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值