java中监听器的概述 (Listener&Filter)

1、监听器

i. 重点1:Servlet中监听器的作用;

主要是用来监听ServletContext、HttpSession、ServletRequest域对象;

①、监听域对象的创建、销毁过程(三个)

②、监听域对象的存值、移除值、替换值(三个)

③、监听HttpSession域中javabean对象状态的变化(绑定/解绑、活化/钝化)(两个)

ii. 重点2:Servlet中监听器的实现思路(步骤);

①、创建一个类实现对应的接口,重写抽象方法;

②、在web.xml中配置监听器:

<listener-class>com.ithema.listeners.MyHttpSessionListener</listener-class>

特殊:监听HttpSession域中javabean对象状态的变化的监听器不需要在web.xml中配置
01-监听器的概述
什么是监听器?

理解监听器的相关术语?

1、监听器:本质肯定是一个java类,用来监听另一个类的方法、属性是否发生了变化,一旦发生了变化,监听器这个类的某个方法就会被调用。

2、监听器中的相关术语:(以:脚踹汽车发生报警为例。)

a) 事件源:被监听的对象(汽车)

b) 监听器:用来监听的对象(报警器)

c) 事件和监听器绑定:在汽车上安装报警器

d) 事件:被监听的对象方法或者属性发生了改变(脚踹了车)

试一试:分析警察抓小偷、放哨等情景中的事件源、监听器、事件。

02-监听器的入门
总结实现监听器监听的思路:

案例代码:

实现思路:

1、创建事件源(被监听对象)

2、绑定事件源和监听器(设置监听),这个时候就知道监听器是什么类型了。

3、创建监听器对象

4、触发监听。(将窗口关闭)

03-Servlet中的监听器
Servlet中的监听器监听的事件源分别是什么?

对Servlet中监听器可以分为哪几类?

1、Servlet中的监听器主要监听的事件源是域对象:ServletContext、HttpServletRequest、HttpSession

2、Servlet中监听器的分类:

a) 监听三个域对象的创建、销毁的监听器。(有三个域对象就对应有三个监听器)

b) 监听三个域对象的存值、替换值、移除值的监听器。(三个)

c) 监听HttpSession中javabean的状态改变(钝化、活化、绑定、解绑)的监听器。(两个)

04-ServletContextListener监听器的使用
Ø 使用ServletContextListener监听器监听ServletContext的创建和销毁的实现思路是怎样的?

1、创建监听器类实现ServletContextListener接口,重新接口的所有方法。

2、将事件源和监听器进行绑定。(在web.xml中配置监听器就行了)

05-HttpSessionListener监听器的使用
Ø HttpSession对象在什么时候创建和销毁?

Ø 分别访问html、jsp、Servlet是否会创建HttpSession对象?

1、HttpSession对象的创建和销毁:

a) 创建:在服务器端第一次调用getSession()方法是创建

b) 销毁:①、非正常关闭服务器时销毁session(正常关闭服务器,session会被序列化到硬盘);②、session过期;③、手动调用HttpSession的方法销毁session。

2、访问html:不会创建HttpSession对象;访问jsp:会创建HttpSession对象(HttpSession对象时jsp的内置对象,jsp在被翻译成Servlet时调用了getSession()方法);访问Servlet:默认不会创建HttpSession对象。

06-ServletRequestListener监听器的使用
Ø ServletRequest对象在什么时候创建和销毁?

ServletRequestListener作用是:监听ServletRequest对象的创建和销毁;

ServletRequest创建时机:当客户端向服务器发送一次请求时创建

ServletRequest销毁时机:服务器对客户端作出相应之后销毁。