8.1Listener简介·为了简化开发,降低程序的业务复杂程度,Java语言封装了Web开发中事件触发和调用Listener的过程,并提供了多种Listener接口用于实现对不同事件的监听。在实际开发中,开发人员无须关注事件如何触发以及怎么调用对应的Listener,只需记住常用Listener接口的功能并能根据这些接口编写相应的Listener实现类即可。编写完成以后,当事件触发Listener时,服务器会自动调用Listener实现类中的方法完成指定操作。。JavaEE中定义了一系列的Listener接口,其中常用的有八种,这八种Listener接口主要用于监听ServletContext、HttpSession和ServletRequest三个类的对象。按照具体功能,这八种Listener接口又可分为以下三类
8.1 Listener简介 • 为了简化开发,降低程序的业务复杂程度,Java语言封装了Web开发中事件触发和调用Listener的 过程,并提供了多种Listener接口用于实现对不同事件的监听。在实际开发中,开发人员无须关注事 件如何触发以及怎么调用对应的Listener,只需记住常用Listener接口的功能并能根据这些接口编写 相应的Listener实现类即可。编写完成以后,当事件触发Listener时,服务器会自动调用Listener实 现类中的方法完成指定操作。 • JavaEE中定义了一系列的Listener接口,其中常用的有八种,这八种Listener接口主要用于监听 ServletContext、HttpSession和ServletRequest三个类的对象。按照具体功能,这八种Listener接 口又可分为以下三类
8.1Listener简介1.与ServletContext相关的Listener接口ServletContextListener接、ServletContextAttributeListener接。2.与会话相关的Listener接口·HttpSessionListener接、HttpSessionAttributeListener接、HttpSessionBindingListener接、HttpSessionActivationListener接。3.与请求相关的Listener接口:ServletRequestListener接、ServletRequestAttributeListener接。:以上接口分别用于实现各种不同的功能,关于这些Listener接口,后文会有详细的介绍,这里不再展开讲解
8.1 Listener简介 1. 与ServletContext相关的Listener接口 • ServletContextListener接口、ServletContextAttributeListener接口。 2.与会话相关的Listener接口 • HttpSessionListener接口、HttpSessionAttributeListener接口、HttpSessionBindingListener接 口、HttpSessionActivationListener接口。 3.与请求相关的Listener接口 • ServletRequestListener接口、ServletRequestAttributeListener接口。 • 以上接口分别用于实现各种不同的功能,关于这些Listener接口,后文会有详细的介绍,这里不再展 开讲解
8.2Listener开发:编写一个Listener程序主要分两步:首先要创建一个Listener类,使其实现对应的接口;其次是将创建好的Listener类配置到Web应用中。接下来,通过一个实例来演示如何编写一个Listener程序:(1)打开Eclipse,新建Web工程chap08,右击工程名,在弹出的菜单中选择NEW一Listener选项,进入创建Listener的界面。:(2)在创建Listener的界面中,Javapackage文本框用于指定Listener所在的包名,这里输入chap08.listener,Classname文本框用于指定Listener的类名,这里输入TestListenerO1,Superclass用于指定Listener的父类,这里暂不填写。单击Next按钮,进入下一个界面,这个界面用于选择当前编写的Listener类要实现的接口
8.2 Listener开发 • 编写一个Listener程序主要分两步:首先要创建一个Listener类,使其实现对应的接口;其次是将创 建好的Listener类配置到Web应用中。接下来,通过一个实例来演示如何编写一个Listener程序。 • (1)打开Eclipse,新建Web工程chap08,右击工程名,在弹出的菜单中选择NEW→Listener选项, 进入创建Listener的界面。 • (2)在创建Listener的界面中,Java package文本框用于指定Listener所在的包名,这里输入 chap08.listener,Class name文本框用于指定Listener的类名,这里输入TestListener01, Superclass用于指定Listener的父类,这里暂不填写。单击Next按钮,进入下一个界面,这个界面 用于选择当前编写的Listener类要实现的接口
8.2Listener开发(3)上图所示界面显示了实际开发中常用的八种Listener接口,本次选择Servletcontextevents选项区域下的Lifecycle选项,这将意味着,当前编写的Listener类可用于监听ServletContext对象的创建及销毁,完成选择后,单击Next按钮进入下一个界面。。(4)选择当前编写的Listener类要实现的其他类型的接口,这里采用默认的javax.servlet.ServletContextListener。单击Finish按钮,完成Listener的创建。这时,Eclipse会弹出TestListenero1类创建完成后的界面
8.2 Listener开发 • (3)上图所示界面显示了实际开发中常用的八种Listener接口,本次选择Servlet context events 选项区域下的Lifecycle选项,这将意味着,当前编写的Listener类可用于监听ServletContext对象的 创建及销毁,完成选择后,单击Next按钮进入下一个界面。 • (4)选择当前编写的Listener类要实现的其他类型的接口,这里采用默认的 javax.servlet.ServletContextListener。单击Finish按钮,完成Listener的创建。这时,Eclipse会弹 出TestListener01类创建完成后的界面
8.2Listener开发(5)打开web.xml文件,发现web.xml中增加了如下代码。<listener><listener-class>com.gfedu.listener.TestListenerol</listener-class></listener>在这些配置信息中,<listener>元素用于声明一个Listener,<listener-class>元素是<listener>元素的子元素,用于设置Listener类的完整名称。这里需要注意的是,一个web.xml文件中可以配置多个Listener,触发的时候服务器会按照配置顺序依次调用。1packagechapes.listener;:而Servlet3.0及以上版本则是自动添加了注解,如下所-importjavax.servlet.ServletContextEvent;WebistenerestListenerelimplementsServletContextListenerpublle3publicvoidcontextDestroyed(ServletContextEventsce)f11// ToDoAuto-generated method stub127public void contextInitialized(ServletContextEvent sce)(5571/ ToDo Auto-generatedmethod stub1180
8.2 Listener开发 • (5)打开web.xml文件,发现web.xml中增加了如下代码。 • 在这些配置信息中,<listener >元素用于声明一个Listener,< listener-class>元素是< listener > 元素的子元素,用于设置Listener类的完整名称。这里需要注意的是,一个web.xml文件中可以配置 多个Listener,触发的时候服务器会按照配置顺序依次调用。 • 而Servlet3.0及以上版本则是自动添加了注解,如下所示: <listener> <listener-class>com.qfedu.listener.TestListener01</listener-class> </listener>