Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JSP] oggetti persistenti e lifecycle

    ciao a tutti, ho un dubbio atroce sul ciclo di vita di una pagina JSP (o di una servlet che è quasi lo stesso) e dei dati ad esso associati:

    sto realizzando un sito di aste in ajax/JSP, per cui ho:

    - un database MySQL che contiene i dati sugli utenti, le aste in corso etc
    - delle pagine JSP che ricevono richieste Ajax a cui rispondono con messaggi json
    - degli script in javascript (jQuery) che gestiscono queste risposte cambiando la pagina del client

    il mio problema è mantenere in ordine il tutto raggruppando logicamente le operazioni, per cui ho creato ad esempio una classe Java di nome "Utente" che rappresenta un generico utente, con tutti i suoi metodi, tra cui il costruttore che compie la prima connessione al database e scarica un po' di dati.

    Questa classe viene istanziata in una pagina jsp invocata all'atto del login, ma vorrei che rimanesse istanziata anche nelle successive operazioni perché molti dati li recupera già col costruttore e non devo stare a reinterrogare il database per riaverli di nuovo.

    Se io creo una grande pagina JSP con uno switch che discerne in base alle richieste il tipo di operazione da effettuare, la classe Utente viene reistanziata ad ogni richiesta oppure rimane in vita finché la sessione è valida?

    Spero di essere stato abbastanza chiaro, purtroppo non ho ancora ben capito come funziona questa faccenda del ciclo di vita delle JSP/Servlet.

  2. #2
    Credo che una soluzione possa essere di usare i singleton oppure di salvare in sessione le tue classi.
    "Na' sedia te vojo tirà!"

  3. #3
    ci avevo pensato anche io a mettere la istanza nella sessione, ma poi mi è venuto in mente che esiste la dichiarazione delle variabili "di pagina" col tag <%! %> e sembra funzionare (devo fare ulteriori test), cioè quando la pagina viene invocata e passa nel ramo in cui una istanza viene usata, questa esiste ancora.

    Ad esempio:

    codice:
    <%! Utente u = null %>
    
    <% switch(condizione){
            case a: 
               u = new Utente(); 
                break; 
            case b:
             String name = u.getName();
             break;
          } %>
    se qualcuno prima ha invocato la pagina finendo nel ramo a, ad una successiva invocazione sul ramo b l'istanza di Utente è ancora "viva".

    Qualcuno più esperto di me può confermare questo?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.