一、什么是监听器
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
二、监听机制
在了解了监听器之后,再来了解一下什么是监听机制
监听机制由以下四个要素组成:
1、事件:一个操作(如:鼠标点击事件等等)
2、事件源:事件发生的地方(如:鼠标点击按钮)
3、监听器:一个对象
4、注册监听:将事件、事件源、监听器绑定在一起。 当事件源上发生某个事件后,执行监听器代码
三、ServletContextListener
(一)ServletContextListener中的方法
这个监听器是用来监听ServletContext对象的创建和销毁的。
ServletContextListener是一个接口,其有两个方法:
1 | void contextInitialized(ServletContextEvent sce) :ServletContext对象创建后会调用该方法 |
(二)ServletContextListener快速入门
步骤:
1、创建一个类,实现ServletContextListener接口
2、实现ServletContextListener中的方法
3、配置监听器
入门Demo如下:
创建实现ServletContextListener接口的类
1 | @WebListener |
配置监听器:
和Servlet、Filter一样,有两种方法来Listener,分别为web.xml方式和注解方式
1、注解方式:上面的代码中使用的就是注解方式
2、web.xml方式:
在web.xml进行如下配置。和Servlet以及Filter不一样,Listener的在web.xml中的配置只需要配置该Listener的路径即可。如下:
1 | <!--配置listener--> |
四、ServletContextListener的应用
因为ServletContextListener这个监听器会在ServletContext对象一创建之后就立即执行,因此我们通常使用这个监听器来加载一些全局资源文件。
需求:在一个项目中希望一个名为applicationContext.xml的资源文件能够在服务器创建完ServletContext对象之后立马加载进来供其他程序使用,且资源文件的位置配置在web.xml中。那么我们就可以用ServletContextListener实现需求。
步骤:
1、创建一个类,实现ServletContextListener接口
2、实现ServletContextListener的方法,在contextInitialized()方法中编写业务逻辑代码
3、配置contextInitialized监听器
web.xml中资源文件所配置的路径如下:
1 |
|
1 |
|
此处并没有将applicationContext.xml文件中的内容进行读取,只是进行了模拟。通过查看是否有异常则能判断资源文件加载是否成功。
五、总结
关于Listener的更多详细知识:
监听器入门看这篇就够了(修订版)
监听器应用【统计网站人数、自定义session扫描器、踢人小案例】(修订版)