一、概念
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
二、Servle监听器
1、编写 Servlet 监听器
(1)和编写其它事件监听器一样,编写servlet监听器也需要实现一个特定的接口,并针对相应动作覆盖接口中的相应方法。
(2)和其它事件监听器略有不同的是,servlet监听器的注册不是直接注册在事件源上,而是由WEB容器负责注册,开发人员只需在web.xml文件中使用标签配置好监听器,web容器就会自动把监听器注册到事件源中。
(3)一个 web.xml 文件中可以配置多个 Servlet 事件监听器,web 服务器按照它们在web.xml 文件中的注册顺序来加载和注册这些 Serlvet 事件监听器。
2、在Servlet规范中定义了多种类型的监听器,它们用于监听的事件源分别为 ServletContext, HttpSession 和 ServletRequest 这三个域对象。
(1)监听servletContext域对象创建和销毁
①ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。
ⅰ当 ServletContext 对象被创建时,激发contextInitialized (ServletContextEvent sce)方法
ⅱ当 ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
②servletContext域对象何时创建和销毁:
ⅰ创建:服务器启动针对每一个web应用创建servletcontext
ⅱ销毁:服务器关闭前先关闭代表每一个web应用的servletContext
(2)监听HttpSession域对象创建和销毁
①HttpSessionListener接口用于监听HttpSession创建和销毁
ⅰ创建一个Session时,sessionCreated(HttpSessionEventse) 方法将会被调用。
ⅱ销毁一个Session时,sessionDestroyed (HttpSessionEventse) 方法将被调用。
②Session域对象创建和销毁的时机创建:用户每一次访问时,服务器创建session
销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面