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销毁时机:服务器对客户端作出相应之后销毁。