JSP应用与开发技术 教学课件 作者 978 7 302 24762 3 第13章使用Servlet过滤器和监听器.ppt
文本预览下载声明
13.2.2 ServletContextListener接口 在Web应用程序启动时需要执行一些初始化任务时,可以编写实现了ServletContextListener接口的监听器类。 在ServletContextListener接口中定义了两个事件处理方法,分别是contextInitialize()和contextDestroyed()。 ServletContextListener整个工作过程如图13-18所示 13.2.3 ServletContextAttributeListener接口 ServletContext的属性是由Web应用程序中所有的servlet所共享的。为保证属性在整个Web应用范围内的一致性,有必要监视ServletContext对象的任何属性的改变。ServletContextAttributeListener侦听器就是为了这一目的而设立的。该侦听器是一个实现了接口ServletContextAttributeListener的Java类 图13-19 ServletContextAttributeListener操作顺序图 【13-6】开发一个对ServletContext及其属性进行监听的程序。 第一步:编写TestListener.java 第二步:在web.xml添加如下代码部署监听器 第三步:编写测试JSP页面testContext.jsp 第四步:看运行结果c:\test.txt文件 13.2.4 HttpSessionBindingListener接口 如果一个对象实现了HttpSessionBindingListener接口,当这个对象被绑定到Session中或从Session中删除时,Servlet容器会通知这个对象,这个对象在接收到通知后,做初始化操作或清除状态的操作。 HttpSessionBindingListener接口提供了如下方法: public void valueBound(HttpSessionBindingEvent event) 当对象正在被绑定到Session中,Servlet容器通知对象它将被绑定到某个会话并标识该会话。 public void valueUnbound(HttpSessionBindingEvent event) 当从Session中删除对象时,Servlet容器通知对象要从某个会话中取消对它的绑定并标识该会话 容器通过HttpSessionBindingEvent对象来通知侦听器发生的事件的具体信息。提供了2种方法: public HttpSessionBindingEvent(HttpSession session, String name) 构造一个事件,通知对象它已经被绑定到会话,或者已经从会话中取消了对它的绑定。要接收该事件,对象必须实现 HttpSessionBindingListener。 public HttpSessionBindingEvent(HttpSession session, String name, Object value) 构造一个事件,通知对象它已经被绑定到会话,或者已经从会话中取消了对它的绑定。要接收该事件,对象必须实现 HttpSessionBindingListener。 13.2.5在线人数统计程序 当HttpSession对象创建或者销毁时,Servlet容器会产生HttpSessionEvent事件,而HttpSessionListener就是用来处理HttpSessionEvent事件的,它包含的两个方法就是分别用来处理HttpSession对象的创建和销毁。 【13-7】利用HttpSessionBindingListener接口,编写一个在线人数统计的程序。 用户登录成功后,显示欢迎信息,并同时显示当前在线的总人数和用户名单。当一个用户退出登录或Session超时时,从在线用户名单中删除这个用户,同时将在线的总人数减1值。在程序的开发中,利用一个实现了HttpSessionBindingListener接口的监听器,当对象被绑定到Session或从Session中被删除时,更新当前在线的用户名单。 第13章 使用Servlet过滤器和监听器 本章学习目标: 理解过滤器和监听器的执行过程和作用 掌握过滤器和监听器的开发和部署 13.1 Filter在Web开发中的应用 过滤器(Filter)是在Servlet2.3规范中引入的新功能,并在Servlet2.4规范中得到增强。Servlet过滤器是一种Web组件,它们拦截请求和响应,以便查看、提取或以某种方式操作客户机和服务器之间交换的数据。 13.1.1 过滤器概述 对Web应用来说,过滤器就是驻留
显示全部