La gestione della sessione è una parte fondamentale nello sviluppo di applicazioni web in Java. Permette di mantenere lo stato tra più richieste HTTP dallo stesso client, dato che HTTP è un protocollo stateless per natura.
Cos'è una sessione?
Una sessione rappresenta una serie di interazioni tra un client e un server in un intervallo di tempo. In Java, le sessioni sono gestite attraverso l'interfaccia HttpSession
, fornita dalle specifiche Servlet.
Creazione e recupero della sessione
Per creare o recuperare una sessione esistente in un servlet, si utilizza il metodo request.getSession()
.
HttpSession session = request.getSession();
Per evitare la creazione automatica di una nuova sessione, è possibile usare:
HttpSession session = request.getSession(false);
if (session == null) {
// Nessuna sessione esistente
}
Salvataggio di attributi nella sessione
Una volta ottenuta una sessione, è possibile salvarvi dati usando i metodi setAttribute
e getAttribute
:
session.setAttribute("username", "mario");
String username = (String) session.getAttribute("username");
Scadenza della sessione
Ogni sessione ha un timeout inattività predefinito. Può essere modificato con:
session.setMaxInactiveInterval(1800); // 30 minuti
Per invalidare manualmente una sessione:
session.invalidate();
Considerazioni di sicurezza
- Evita di salvare informazioni sensibili in chiaro nella sessione.
- Utilizza HTTPS per proteggere l'ID di sessione.
- Considera il rigenerare l'ID di sessione dopo l'autenticazione.
Conclusione
La gestione della sessione in Java è semplice ma potente. Una corretta comprensione di HttpSession
è essenziale per creare applicazioni web sicure e scalabili.