配置 Listener 只要向Web 应用注册 Listener 实现类即可,无须配置参数之类的东西,因此十分简单。为Web应用配置Listener也有两种方式:
- 使用@WebListener修饰Listener实现类即可。
- 在Web.xml文档中使用<listener.../>元素进行配置。
使用@WebListener时通常无须指定任何属性,只要使用该Annotation 修饰 Listener 实现类即可向Web应用注册该监听器。
在web.xml中使用<listener.../>元素进行配置时只要配置如下子元素即可。
- listener-class:指定Listener实现类。
若将ServletContextListener 配置在 Web 容器中,且Web容器(支持Servlet2.3以上规范)支持Listener,则该ServletContextListener 将监听Web应用的启动、关闭。
如果选择web.xml文件来配置Listener,则应在web.xml文档中添加如下配置片段:
<listener>
<!-- 指定Listener的实现类 -->
<listener-class>lee.GetConnListener</listener-class>
</listener>
上面的配置片段向Web应用注册了一个Listener,其实现类lee.GetConnListener。当Web应用被启动时,该Listener的contextInitialized方法被触发,该方法会获取一个JDBC Connection,并放入application范围内,这样我们的所有JSP页面都可通过application获取数据库连接,从而可以非常方便地进行数据库访问。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
注意:本例中的ServletContextListener把一个数据库连接(Connection实例)设置成application属性,这样将导致所有页面都使用相同的Connection实例,实际上这种做法的性能非常差。较为使用的做法是:应用启动时将一个数据源(javax.sql.DataSource实例)设置成application属性,而所有JSP页面都通过 DataSource实例来获取数据库连接,再进行数据库访问,这样就会好得多。关于数据库连接池的介绍请参看疯狂Java体系的《疯狂Java讲义》的13.8节。