Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577

    [JSP/Servlet]oggetti persistenti

    Ciao a tutti

    Posto per spigare il mio problema da novellino

    Sto costruendo una applicazione abbastanza complessa con le jsp/servlet e non le ho mai usate prima d'ora il lavoro procede discretamente ma i problemi li incontro ogni mezzo passo...
    cmq...

    Vorrei scrivere una servlet che si avvii automaticamente quando faccio partire la mia WebApp
    Questa servlet deve aprire un dataBase e scrivere determinate informazioni in un oggetto e renderlo persistente per tutti i client . Per quanto riguarda le comunicazioni con il DB e la scrittura del mio oggetto non ci sono problemi .
    il problema è : come faccio a far partire in modo automatico questa servlet e rendere l'oggetto persiste in modo da poterlo utilizzare all'interno delle mie Jsp?

    Spero che si possa fare


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Le servlet vengono istanziate tutte all'avvio di Tomcat. Puoi sovrascrivere il metodo init della tua servlet e mettere la parte che crea l'oggetto al suo interno. Per renderlo disponibile a tutte le servlet puoi memorizzarlo sotto application invece che sotto request o session.

  3. #3
    Dai uno squardo all'interfaccia ServletContextListener

    Qui trovi qualcosa di utile.

    Qui trovi un problema analogo al tuo (inizializzazione della connessione al DB) tramite proprio il ServletContextListener, anche se è un esempio che credo sia un pò più complesso per quello che cerchi.

    Cmq in giro trovi un bel pò di documenti a riguardo.
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Gli esempi proposti da Rave sono un po troppo complessi per le mie conoscenze ho comunque pensato di fare cosi'


    costruisco una servlet che istanzia il mio oggeto dentro il metodo init() della servlet.

    Costruisco una pagina.jsp e richiamo la mia servlet all'interno delle jsp nella seguente maniera
    codice:
    <jsp:include page="/miaServlet">
    a questo punto tutti i client che chidono la stessa pagina.jsp ,quindi tutti eseguono la precedente istruzione ma solo la prima richiesta della servlet effetuerà la init() .


    ?Domanda posso creare una servlet con il solo metodo init() ?

    l'oggetto andra' scritto poi sul contesto dell'applicazione (nel metodo init()) nel seguente modo
    codice:
    ServletContext application = request.getSession().getServletContext(); application.setAttribute("LISTACATEGORIE",listaCategorie);
    e ripreso nelle mie jsp con le seguenti istruzioni
    codice:
    ListaCategorie lista=(ListaCategorie)application.getAttribute("LISTACATEGORIE");
    a questo punto tutti i client avranno a disposizione questo oggetto in TutteLePagine.jsp scritto sulla application ?


    Sopratutto a senso agire in questa mainera?

    Scusate per le troppe domande


  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    L'idea proposta da R@ve M@ster e' molto piu' brillante quindi ti consiglio di usare quella.
    Non e' poi cosi complicata: ti scrivi una classe che implementa ServletContextListener
    codice:
    import javax.servlet.http.*;
    import javax.servlet.*;
    public class MioContextListener implements ServletContextListener{
        public void contextInitialized(ServletContextEvent se) {
             ServletContext application = se.getServletContext();
             //Crei l'oggetto e te lo salvi
        }
    }
    poi nel file web.xml (lo stesso dove vengono registrate le servlet), prima della lista delle servlet aggiungi le seguenti righe:
    codice:
    <listener>
            <listener-class>Package.NomeClasseListener</listener-class>
    </listener>
    In questo modo ti risolvi il problema del chiamare la servlet e della scrittura della stessa con il solo metodo init, perche' l'oggetto viene creato subito.
    A quel punto puoi accedere all'oggetto sia dalle tue servlet, sia dalle tue pagine jsp.
    Non ti so dire se a senso o no agire in questa maniera, perche' (come si evince da altri miei post) sono solo uno studente e non ho molta esperienza.

  6. #6
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Grazie SiomOOO




    Ti faccio sapere al piu preso sullo sviluppp di questa servlet , per il momento grazie mille


  7. #7
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    MA per salvare il mio oggetto dovro fare sempre una setAttribute(myObject)
    e recuperarlo nelle diverse jsp con la getAttribute , oppure posso usare direttamente il mio oggetto ad esempio myObj.method?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    La prima

  9. #9
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    ok funziona molto bene , grazie per i consigli .

    Per completezza posto una piccola modifica al codice di simo7784 dovuta al fatto che le ServletContextListener sono delle interfaccie e quindi bisonga implemetare assolutamente tutti i metodi di questa .


    codice:
    import javax.servlet.http.*;
    import javax.servlet.*;
    public class MioContextListener implements ServletContextListener{
        public void contextInitialized(ServletContextEvent se) {
             ServletContext application = se.getServletContext();
             //Crei l'oggetto e te lo salvi
        }
       
        public void contextDestroyed(ServletContextEvent arg0) 
       {
               //codice ;
       }
    
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.