一、什么是监听器
监听器就是监听某个对象的的状态变化的组件
事件源:被监听的对象 —– 三个域对象 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 发生错误页面跳转时执行。