日期:2014-05-16  浏览次数:20307 次

(五)Jsp Listener介绍

Listener的作用类似于load-on-startup Servlet。用于在Web应用启动程序时,启动某些后台程序,这些后台程序负责为系统运行提供支持。

Listener的启动时机相比load-on-startup Servlet早,只是Listener是Servlet2.3规范之后才出现的。

Listener实际上就是用于取代那些无须相应客户端请求的Servlet,所以Listener类中无须提供相应用户请求的方法,Listener的作用是为整个Web应用提供后台服务。

?

创建Listener类必须实现ServletContextListener接口。

该接口包含两个方法:

contextInitialized(ServletContextEvent sce); 启动Web应用时,系统调用Listener的该方法

contextDestroyed(ServletCOntextEvent sce);? 关闭Web应用时,系统调用Listener的该方法

?

web.xml中配置Listener:

<listener>
<listener-class>com.wyx.listener.GetConnListener</listener-class>
 </listener>

?

?监听类
它能捕捉到服务器的启动和停止! 在启动和停止触发里面的方法做相应的操作!
?它必须在web.xml 中配置才能使用!
??? 没别的用处!就是配置监听类的~

1.启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>

2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.

3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.

4.容器创建<listener></listener>中的类实例,即创建监听.

5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得
ServletContext = ServletContextEvent.getServletContext();
context-param的值 = ServletContext.getInitParameter("context-param的键");

6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.
换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.

7.举例.你可能想在项目启动之前就打开数据库.
那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接.

8.这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.