Exemple ServletContextListener

Exemple ServletContextListener

L'auditeur est quelque chose assis là et attend que l'événement spécifié se produise, puis «détourne» l'événement et exécute son propre événement.

Problem
Vous souhaitez initialiser un pool de connexions de base de données avant le démarrage de l'application Web, existe-t-il une méthode «main ()» dans l'environnement de l'application Web?

Solution
LeServletContextListener est ce que vous voulez, il exécutera votre code avant le démarrage de l'application Web.

1. Exemple ServletContextListener

Dans cet exemple, nous allons vous montrer comment créer une classe d'écouteur personnalisée en implémentantServletContextListener, qui exécutent votre code avant le démarrage de l'application Web.

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
Pour le conteneur Servlet 3.x, vous pouvez annoter l'écouteur avec@WebListener, pas besoin de déclarer dansweb.xml.