リスナーはそこに座って、指定されたイベントが起こるのを待ってから、イベントをハイジャックして、自分のイベントを実行します。

1. ServletContextListenerの例

この例では、Webアプリケーションが起動する前にコードを実行する `ServletContextListener`を実装して、カスタムリスナークラスを作成する方法を示します。

1.1クラスを作成し、 `ServletContextListener`インタフェースを実装します。

MyAppServletContextListener.java

package com.mkyong.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyAppServletContextListener
               implements ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("ServletContextListener destroyed");
    }

       //Run this before web application is started
    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        System.out.println("ServletContextListener started");
    }
}

1.2デプロイメント記述子に入れます。

web.xml

<web-app ...>
   <listener>
    <listener-class>
             com.mkyong.listener.MyAppServletContextListener
        </listener-class>
   </listener>
</web-app>

1.3 Tomcatの起動…​.

…​.//…​
Dec 2, 2009 10:11:46 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.20

ServletContextListener started ←————- Your code here, before we application –→

Dec 2, 2009 10:11:46 AM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080//…​
INFO: Server startup in 273 ms

** 注意** サーブレットコンテナ3.xの場合、リスナーに `@WebListener`を付けることができます。これは` web.xml`で宣言する必要はありません。

link://tag/listener/[listener]link://タグ/servlet/[servlet]