2009-09-02 17 views
36

Qual è il modo migliore di memorizzare i dati relativi alle sessioni di un utente (ad esempio, un registro delle azioni recenti eseguite dall'utente) in un'applicazione Web Spring MVC (2.5)?Come memorizzare la sessione in Spring MVC

Utilizzando la classica javax.servlet.http.HttpSession o specificando scope = "session" nei bean controller e memorizzando i dati in un oggetto di sessione?

risposta

36

I bean con ambito sessione (utilizzando scope="session") rappresentano l'approccio più pulito. Ciò elimina la necessità di interagire con la sessione da solo.

Se si desidera autorizzare un bean con ambito sessione nel controller, è necessario rendere il controllo della sessione con ambito specifico oppure utilizzare un scoped-proxy per collegarlo a un controller singleton, come described here. O l'approccio è valido.

+0

grazie, un approccio più pulito era esattamente quello che stavo cercando – dakull

+1

Grazie per questa risposta eccellente, stavo usando HttpSession direttamente fino ad ora. Effettuare lo scope del Controller Controller (cioè il vecchio Throwaway Controller) funziona anche ed evita la necessità del proxy scope. Ci sono degli aspetti negativi in ​​questo? –

+4

@Dick: i bean con scope richiesta comportano una penalizzazione delle prestazioni, ma finché il controller non ha un costoso processo di inizializzazione personalizzato o il traffico non è troppo elevato, non dovrebbe essere significativo. – skaffman

Problemi correlati