目录 1、JavaWeb八大监听器概述 2、生命周期监听器(3个) 3、操作域属性的监听器(3个) 4、相关HttpSession的感知监听器(2个) =================================================================================================== 1、JavaWeb八大监听器概述 JavaWeb三大组件:Servlet、Listener、Filter,其中Servlet在之前的博文中已经做了较为详细的讲解,下面开始拆解Listener监听器。 JavaWeb中的八大监听器,三大域对象各有一个生命周期监听器和属性操作监听器,共计6个;还有2个与HttpSession相关的感知型监听器。 Listener:监听器 1.它是一个接口,内容由我们来实现; 2.它需要注册在事件源上,例如注册在按钮上; 3.监听器中的方法,会在特殊事件发生时被调用! 在JavaWeb被监听的事件源为JavaWeb的三大域对象:ServletContext、HttpSession、ServletRequest 功能:监听域对象"创建"与"销毁"的监听器;(生命周期监听器3个) 监听域对象"操作域属性"的监听器;(属性操作监听器3个) 感知型监听器。(2个) 2、生命周期监听器(3个) 一共有三个,每个域对象各一个,需要在web.xml文件中配置监听器: ServletContextListener:Tomcat启动和关闭时调用下面两个方法 public void contextInitialized(ServletContextEvent evt):ServletContext对象被创建后调用; public void contextDestroyed(ServletContextEvent evt):ServletContext对象被销毁前调用; HttpSessionListener:开始会话和结束会话时调用下面两个方法 public void sessionCreated(HttpSessionEvent evt):HttpSession对象被创建后调用; public void sessionDestroyed(HttpSessionEvent evt):HttpSession对象被销毁前调用; ServletRequestListener:开始请求和结束请求时调用下面两个方法 public void requestInitiallized(ServletRequestEvent evt):ServletRequest对象被创建后调用; public void requestDestroyed(ServletRequestEvent evt):ServletRequest对象被销毁前调用。 生命周期监听器参数:事件对象 ServletContextEvent:方法 ServletContext getServletContext(); HttpSeessionEvent:方法 HttpSession getSession(); ServletRequestEvent:方法 ServletRequest getServletRequest() ServletContext getServletContext() 编写测试例子: 编写MyServletContextListener类,实现ServletContextListener接口; 在web.xml文件中配置监听器; 为了看到session销毁的效果,在web.xml文件中设置session失效时间为1分钟; /* * ServletContextListener实现类 * contextDestroyed() -- 在ServletContext对象被销毁前调用 * contextInitialized() -- -- 在ServletContext对象被创建后调用 * ServletContextEvent -- 事件类对象 * 该类有getServletContext(),用来获取ServletContext对象,即获取事件源对象 */ public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent evt) { System.out.println("ServletContext对象被创建后调用,已创建ServletContext对象"); } public void contextDestroyed(ServletContextEvent evt) { System.out.println("ServletContext对象被销毁前调用,即将销毁ServletContext对象"); } } /* * HttpSessionListener实现类 * sessionCreated() -- 在HttpSession对象被创建后被调用 * sessionDestroyed() -- -- 在HttpSession对象被销毁前调用 * HttpSessionEvent -- 事件类对象 * 该类有getSession(),用来获取当前HttpSession对象,即获取事件源对象 */ public class MyHttpSessionListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent evt) { System.out.println("创建session对象"); } public void sessionDestroyed(HttpSessionEvent evt) { System.out.println("销毁session对象"); } } /* * ServletRequestListener实现类 * requestDestroyed() -- 在ServletRequest对象被销毁前调用 * requestInitialized() -- 在ServletRequest对象被创建后调用 * ServletRequestEvent -- 事件类对象 * 该类有getServletContext(),用来获取ServletContext对象 * 该类有getServletRequest(),用来获取当前ServletRequest对象,即事件源对象 */ public class MyServletRequestListener implements ServletRequestListener { public void requestDestroyed(ServletRequestEvent evt) { System.out.println("销毁request对象"); } public void requestInitialized(ServletRequestEvent evt) { System.out.println("创建request对象"); } } <listener> <listener-class>cn.zzq.listener.MyServletContextListener</listener-class> </listener> <listener> <listener-class>cn.zzq.listener.MyHttpSessionListener</listener-class> </listener> <listener> <listener-class>cn.zzq.listener.MyServletRequestListener</listener-class> </listener> <session-config> <session-timeout>1</session-timeout> //session过期时间为1分钟,单位:分钟 </session-config>
JavaWeb三大组件 —— Listener监听器——生命周期监听器(3个)
最新推荐文章于 2024-01-08 14:59:15 发布