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
.