Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些对象中属性发生修改的事件。可以在事件发生前、发生后进行一些处理,一般可以用来统计在线人数和在线用户、统计网站访问量、系统启动时初始化信息等。表3.4所示列出了Servlet的监听器。
表3.4 Servlet监听器
【例3.7】监听request作用域。
(1)新建名称为chapter3_listener的Web工程,在工程的WebContent目录下新建名称为index.jsp,在src目录下新建名称为RequestCycleListener类并实现ServletRequestListener接口,在requestInitialized方法中打印请求的地址,在requestDestroyed方法中打印“请求销毁”。index.jsp和RequestCycleListener内容如下所示。
Index.jsp页面容:
(2)在web.xml文件中配置监听器:
(3)部署工程并启动 Tomcat,在浏览器中输入 http://localhost:8080/chapter3_listener/index.jsp,控制台输出结果如图3.25所示。
图3.25 监听request作用域(www.xing528.com)
程序说明:
要监听request作用域,新建一个类并且实现ServletRequestListener接口。ServletRequest Listener接口有两个方法,分别是requestInitialized()和requestDestroyed()方法。当浏览器发起请求产生了request对象,触发执行requestInitialized()方法。在本例中,获取到HttpServletRequest对象,并输出了请求的URL,通过该对象可以进一步获取请求的参数等数据。Web服务器接收到请求并做出响应之后,触发执行requestDestroyed()方法。在本程序中输出了“请求销毁”。监听器必须在web.xml文件中配置或者用注解的方式(@WebListener)声明才能起作用。
【例3.8】监听ServletContext作用域。
(1)在例3.7工程的基础上,在src/chapter3_listener目录下新建类SystemListener并实现ServletContextListener接口。SystemListener类内容如下所示:
(2)在web.xml文件中配置监听器:
(3)启动Tomcat和停止Tomcat,运行结果如图3.26所示。
图3.26 监听ServletContext作用域
程序说明:
ServletContextListener监听器主要监听ServletContext域对象的创建和销毁。要实现监听ServletContext,需要新建一个类并且实现ServletContextListener接口。在 Servlet ContextListener接口中有两个方法,分别是contextInitialized()和contextDestroyed()方法。在本例中contextInitialized()方法在Tomcat服务器启动完成自动触发执行,contextDestroyed()方法在服务器销毁时触发执行。在图3.26中可以看到当Tomcat服务器启动完成后再控制台输出了“上下文对象产生”,而在停止Tomcat服务器时在控制台输出“上下文对象销毁”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。