2010-10-14 3 views
0

Moment où la servlet principale est déployée, elle doit effectuer des calculs et préparer une liste. cette liste doit être accessible par l'autre servlet appelée par la suite. le calcul doit être exécuté une seule fois. quelqu'un pourrait expliquer s'il vous plaît comment faire cela.La servlet stocke la liste dans le contexte de servlet

grâce

Répondre

3

Vous pouvez utiliser un ServletContextListener et effectuer des calculs à partir de là.


Le fichier de classe:

public final class YourListener implements ServletContextListener { 
    @Override 
    public void contextInitialized(ServletContextEvent event) { 
     ServletContext context = event.getServletContext(); 
     //Calculation goes here 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent event) { 
     //Nothing to do 
    } 
} 

web.xml:

<web-app> 
    <!-- ... --> 
    <listener> 
     <listener-class>ext.company.project.listener.YourListener</listener-class> 
    </listener> 
    <!-- ... --> 
</wep-app> 

Ressources:

+0

merci Colin. Mais j'effectue le calcul, puis comment puis-je stocker/récupérer ... s'il vous plaît expliquer –

+0

@Abdul, vous pouvez stocker le résultat dans votre [contexte] (http://download-llnw.oracle.com/javaee/5/ api/javax/servlet/ServletContext.html) comme un attribut et le charger plus tard avec 'getServletContext(). getAttribute()' à partir de n'importe quelle servlet –

+0

@Colin ... merci beaucoup pour l'aide. Pour utiliser cet objet de contexte, dois-je appeler le répartiteur de requêtes en utilisant le contexte? S'il vous plaît laissez-moi savoir –

0

dans votre principale méthode d'initialisation de servlet

public void init(ServletConfig config) throws ServletException { 
    super.init(config); 

    // do calculations 
    ArrayList resultsList = calculate_something(); 

    // save for other servlets 
    config.getServletContext().setAttribute("SAVED_DATA", resultsList); 
} 

dans les autres servlets

// retrieving value from ServletContext 
ArrayList list = (ArrayList)getServletContext().getAttribute("SAVED_DATA"); 
+0

Si la servlet est détruite et rechargée, cela arrivera deux fois. –

+0

@Colin Hebert vous avez raison, il a mentionné que la servlet principale nécessaire pour faire le calcul, c'est pourquoi j'ai posté ce que j'ai fait. Il est évident à partir de l'échange que la question est mal comprise. –

+0

.. mon erreur en tapant la question faux .. désolé –

Questions connexes