JavaWeb学习笔记(Servlet事件监听器)
Servlet事件监听器概述
在好处呢关系开发中,经常需要对某些事件进行监听,如监听鼠标单击事件、监听按键事件等,此时需要使用事件监听器。
监听器中有几个重要组成部分:
(1)事件:用户的一个操作
(2)事件源:产生事件的对象
(3)事件监听器:负责监听发生在事件源上的事件
(4)事件处理器:监听器的成员方法,当事件发生的时候会触发对应的处理器的方法。
事件监听器在进行工作是的步骤:
(1)将监听器绑定到事件源上,也就是注册监听器
(2)事件发生是会触发监听器的成员方法,即事件处理器,传递事件对象
(3)事件处理器通过事件对象获得事件源,并对事件源进行处理。
事件监听器的种类
(1)用于监听域对象创建和小会的时间监听器(ServletContextListener接口,HttpSessionListener接口,ServletRequestListener接口)。
(2)用于监听域对象属性增加和删除的时间监听器(ServletContextAttributeListener接口、HttpSessionAttributeListener接口、ServletRequestAttributeListener接口)。
(3)用于监听绑定到HTTPSession域中某个对象状态的时间监听器(HttpSessionBindingListener接口、HttpSessionActivationListener接口)。
监听域对象的生命周期
在Web应用程序的运行期间,Web容器会创建和销毁三个比较重要的对象ServletContext、HttpSession和ServletRequest,这些对象被称为域对象。
ServletContextListener接口
ServletContextListener用来监听ServletContext对象的生命周期,ServletContext对象用于监听该对象的创建于销毁过程。ServletContextListener接口定义了两个事件处理方法。
(1)contextlnitialized()方法
语法定义:
public void contextInitialized(servletContextEvent sce)
当ServletContext对象被创建时,Web容器会调用contextInitialized()方法,contextInitalized()方法接收一个ServletContextEvent类型的参数,contextInitialized()方法内部通过参数创建ServletContext对象。
(2)contextDestroyed()方法
语法定义为:
public void contextDestroyed(servletContextEvent sce)
当ServletContext对象快要被销毁时,Web容器回调用contextDestroy()方法。
HttpSessionListener接口
HttpSession用于完成会话操作,为了监听HttpSession 对象的创建和销毁ServletAPI提供一个HTTPSessionListener接口,当Web应用程序注册了一个或多个实现了HTTPSessionListener接口的事件监听器,Web容器在创建或销毁每个HttpSession对象就会产生一个HttpSessionEvent事件对象,然后依次调用HttpSession事件监听器的相应方法,并将HttpSessionEvent事件对象传递给这些方法。
(1)sessionCreated()方法
语法定义:
public void sessionCreated(HttpSessionEvent se)
每当一个HttpSession对象被创建时,Web容器都会调用sessionCreated()方法,sessionCreated()方法接收一个HttpSessionEvent类型的参数,sessionCreated()方法,内部都可以通过这个参数来获取当前创建的HttpSession对象。
(2)sessionDestroy()方法
语法定义:
public void sessionDestroyed(HttpSessionEvent se)
每当一个HttpSession对象即将被销毁时,Web容器都会调用sessionDestroyed()方法,并将HttpSessionEvent事件对象传递给这个方法。
ServletRequestListener接口
ServletRequest对象用于获取客户端发送的请求数据,为了监听ServletRequest对象的创建和销毁过程,Servlet API提供了ServletRequestListener接口,当Web应用程序中注册了一个或多个实现了ServletRequestListener接口的事件监听器时,Web容器在创建或销毁每个ServletRequest对象时都会产生一个ServletRequestEvent事件对象,然后依次调用每个ServletRequest事件监听器中的相应处理关系。
(1)RequestInitialized()方法
public void requestInitialized(servletRequestEvent sre)
每当一个ServletRequest对象创建时,Web容器都会调用requestIntitlized()方法,resquestInitlized()方法就收一个ServletRequestEvent类型的参数,requestInitialized()方法内部可以通过这个参数来获取当前创建的ServletRequest对象。
(2)requestDestroyed()方法
语法定义:
pubic voidrequestDestroyed(ServletRequestEvent sre)
每当一个ServletRequest对象销毁时,Web容器都会调用requestDestroyed()方法,并将ServletRequestEvent对象传递给这个方法。
示例:
监听域对象的生命周期
(1)创建一个工程,在工程中创建一个cn.itcast.chapter05.listener包,该包中编写一个MyListener类,这个类实现了ServletContextListener、HttpSessionListener和ServletRequestListener三个监听器接口。
package cn.itcast.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebLi