2.10.2 配置Listener

2.10.2 配置Listener

配置Listener只要向web应用注册Listener实现类即可,无须配置参数之类的东西,因此十分简单为Web应用配置Listener也有两种方式。

  • 使用@Weblistener修饰Listener实现类即可。
  • web.xml文档中使用<listener>元素进行配置。

使用@Weblistener时通常无须指定任何属性,只要使用该注解修饰Listener实现类即可向Web应用注册该监听器。
web.xml中使用<listener>元素进行配置时只要配置如下子元素即可:

  • listener-class:指定Listener实现类。

若将ServletContextlistener配置在web容器中,且Web容器(支持Servlet2.3以上规范)支持Listener,则该ServletContextListener将可以监听Web应用的启动、关闭。
如果选择web.xml文件来配置Listener,则应在web.xml文档中增加如下配置片段:

1
2
3
4
<listener>
<!--指定 Listener的实现类-->
<listener-class>lee.GetConnListener</listener-class>
</listener>

上面的配置片段向Web应用注册了一个Listener,其实现类为lee.GetConnListener。当Web应用被启动时,该ListenercontextInitialized方法被触发,该方法会获取一个JDBCConnection,并放入application范围内,这样所有JSP页面都可通过application获取数据库连接,从而可以非常方便地进行数据库访问。

本例中的ServletContextListener把一个数据库连接(Connection实例)设置成application属性,这样将导致所有页面都使用相同的Connection实例,实际上这种做法的性能非常差。较为实用的做法是:应用启动时将一个数据源(javax.sql.DataSource实例)设置成application属性,而所有JSP页面都通过DataSource实例来取得数据库连接,再进行数据库访问,这样就会好得多。关于数据库连接池的介绍请参看疯狂Java体系的《疯狂Java讲义》一书的13.8节