A quest'ultima ipotesi ci avevo pensato anch'io. Creavo un campo loggato di tipo booleano, se è false l'utente non viene visualizzato nella lista, se è true invece si. Poi pensandoci bene mi è sorto un piccolo dubbio.

Inserisco nickname e password, accedo all'interno del sito. Il mio nome appare tra la lista degli utenti connessi. Esco dall'apposito bottone “logout”, nessun problema, prima di invalidare la sessione reimposto il campo loggato a false. Supponiamo invece che l'utente mentre tranquillamente naviga sul sito web (di conseguenza risulta online e quindi il campo loggato è impostato a true), subisce lo spegnimento del proprio PC, oppure poltrone come la maggior parte degli altri utenti che girovagano per la rete, esce dal sito mediante l'apposita X. Come faccio a impostare il valore di quest'ultimo a false? E' possibile magari mettere un timeout della sessione in modo tale da invalidare la sessione e ancor prima di farlo cambiar lo stato di loggato? Se non sbaglio il timeout deve essere impostato sul file web.xml vero? Tipo:

________<session-config>
________________<session-timeout>minuti</session-timeout>
________</session-config>

Però mettendolo nel file web.xml come reimposto lo stato di loggato a false?


Altra piccola curiosità riguardo sempre le sessioni. Nel login imposto la sessione a true e assegno l'attributo all'oggetto Utente. Quindi l'utente loggato ha la propria sessione attiva. Poi mi sposto in un'altra servlet, per far mantenere questa sessione, è necessario che in ogni servlet creata metta la seguente riga:

request.getSessione(true) o magari session.getAttribute(“nomeSessione”)? Oppure in JAVA non c'è bisogno di nessuna delle due istruzioni in quanto la sessione continua ad essere sempre in funzione?