ServletContextListener Beispiel

ServletContextListener Beispiel

Der Listener sitzt etwas da und wartet, bis ein bestimmtes Ereignis eingetreten ist, dann "entführt" er das Ereignis und führt sein eigenes Ereignis aus.

Problem
Sie möchten einen Datenbankverbindungspool initialisieren, bevor die Webanwendung gestartet wird. Gibt es eine "main ()" - Methode in der Webanwendungsumgebung?

Solution
ServletContextListener ist das, was Sie wollen. Es wird Ihren Code ausführen, bevor die Webanwendung gestartet wird.

1. ServletContextListener Beispiel

In diesem Beispiel zeigen wir Ihnen, wie Sie eine benutzerdefinierte Listener-Klasse erstellen, indem SieServletContextListener implementieren, die Ihren Code ausführen, bevor die Webanwendung gestartet wird.

1.1 Create a class and implement the ServletContextListener interface.

MyAppServletContextListener.java

package com.example.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 Put it in the deployment descriptor.

web.xml


   
    
             com.example.listener.MyAppServletContextListener
        
   

1.3 Starting 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

Note
Für den Servlet-Container 3.x können Sie den Listener mit@WebListener versehen, ohne dassweb.xml deklariert werden müssen.