void sessionCreated (HttpSessionEvent e)Il metodo
void sessionDestroyed (HttpSessionEvent e)
sessionCreated()
viene invocato nel momento in cui il Container crea una nuova sessione, mentre il metodo sessionDestroyed()
viene invocato quando la sessione viene distrutta, sia nel caso in cui venga invalidata esplicitamente mediante il metodo invalidate
(), sia nel caso in cui la sessione venga invalidata automaticamente dal container perché scade il timeout. Entrambi i metodi ricevono in ingresso un'istanza della classe HttpSessionEvent, mediante la quale è possibile intercettare diverse informazioni sulla sessione.
Per la creazione pratica, nella nostra classe Listener definiamo una Collection di Stringhe che conterrà l'elenco delle sessioni create.
Nel metodo sessionCreated()
aggiungiamo alla lista l'ID della sessione creata. Nel metodo sessionDestroyed()
eliminiamo l'ID della sessione distrutta. Definiamo anche un metodo pubblico che ci permette di ottenere la lista delle sessioni attive.
public class HtmlSessionListener implements HttpSessionListenerPer attivare il Listener è necessario definirlo nel file web.xml, nel seguente modo:
{
private static Collectionutenti = new ArrayList ();
public void sessionCreated(HttpSessionEvent e)
{
System.out.println("Nuova sessione creata. ID sessione: " + e.getSession().getId());
utenti.add(e.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent e)
{
System.out.println("Distrutta sessione con ID " + e.getSession().getId());
utenti.remove(e.getSession().getId());
}
public static CollectiongetUtenti()
{
return utenti;
}
}
HtmlSessionListener listener.HtmlSessionListener
Possiamo testare il tutto creando una pagina JSP, nella quale stampiamo il numero di sessioni attive con i relativi ID di sessione assegnati.
<%@page import="listener.HtmlSessionListener"%>
<%@page import="java.util.Iterator"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Utenti connessi</title>
</head>
<body>
Gli utenti connessi al sistema sono
<%= HtmlSessionListener.getUtenti().size() %>
<%
Iterator<String> it = HtmlSessionListener.getUtenti().iterator();
while (it.hasNext()){
String id = it.next();
%><p><%= id %></p>
<%
}
%>
</body>
</html>
Per testare l'esempio, impostiamo un valore basso al timeout di sessione. Per farlo è necessario inserire nel web.xml il seguente tag:
Nessun commento:
Posta un commento