30 ebook a un prezzo mai visto!

Risparmia sui tuoi libri preferiti, mentre supporti la community Python Italia

➡️ Scopri gli ebook bundle
Home
Le Sessioni (seconda parte)

03 Ottobre 2002

Le Sessioni (seconda parte)

di

Utilizzando le sessioni è possibile tener traccia della navigazione dell'utente collegando tra loro request differenti. Vediamo un piccolo esempio di utilizzo

Nell’articolo della settimana scorsa abbiamo visto come sia possibile utilizzare l’oggetto session, messo a disposizione dal JSP engine, per tener traccia della navigazione dell’utente scavalcando le limitazioni intrinseche imposte dal protocollo HTTP.

Sappiamo che esistono i metodi putValue / SetAttribute e getValue / getAttribute che ci permettono di memorizzare e recuperare le informazioni sulla navigazione dell’utente all’interno di un oggetto memorizzato sul server, l’oggetto session.

Per vedere in dettaglio l’utilizzo di questi metodi vi propongo di scrivere una pagina JSP il cui nome di file sia session2.jsp ed il cui contenuto sia il seguente.


<%@ page import="java.util.*" %>
<% session = request.getSession(true); %>

Informazioni di sessione:


<%
String attrib = request.getParameter(“attrib”);
String value = request.getParameter(“value”);
if ((attrib != null)&&(value != null))
{ session.setAttribute(attrib,value); }
String elimina = request.getParameter(“elimina”);
if (elimina != null)
{ session.removeAttribute(elimina); }
for(Enumeration en = session.getAttributeNames(); en.hasMoreElements();)
{
String key = (String) en.nextElement();
Object atr = session.getAttribute(key);
if((atr!=null)&&(key!=null))
%>

<% } %>

Info Type Value
ID <%= session.getId() %>
Data e Ora creazione oggetto session <%= new java.util.Date(session.getCreationTime()) %>
<%= key.toString() %> <%= atr.toString() %>
>


/

Se creiamo il file session2.jsp e lo inseriamo nella ormai usuale directory

[TOMCAT_DIR]webappsapogeo, potremo raggiungerlo via HTTP attraverso l’url:

http://localhost:8080/apogeo/session2.jsp

ed ecco il risultato che otterremo:

Quella che abbiamo appena costruito è una piccola applicazione web dotata di informazioni di sessione, in particolare ci interessa la funzionalità che ci permette di aggiungere una nuova variabile di sessione inserendo i dati richiesti: il suo nome, il suo valore e premendo il tasto “Inserisci”.

Nell’ipotesi che possa trattarsi di un’applicazione bancaria, proviamo ad inserire i dati seguenti:

Premendo il tasto “inserisci” mandiamo una request all’application server chiamando la stessa pagina session2.jsp passandole due parametri che saranno memorizzati all’interno dell’oggetto session dalla pagina stessa.

La memorizzazione avviene attraverso la seguente istruzione:

session.setAttribute(attrib,value);

/

Sarà il codice JSP a recuperare poi i tutti i parametri attraverso il ciclo:

for(Enumeration en = session.getAttributeNames(); en.hasMoreElements();)
{

}

/

Ecco il risultato dopo la pressione del tasto “Inserisci”:

Come si può vedere la nuova variabile stata aggiunta all’oggetto session e quindi compare nella lista, questo comportamento può essere ripetuto quante volte si vuole, fino a creare vere e proprie collezioni di oggetti come nel caso seguente:

Accanto ad ogni riga della tabella c’è anche il pulsante “Cancella” che, come è lecito aspettarsi, effettua la cancellazione della variabile di sessione rappresentata nella riga stessa.

Compito a casa:

Chi mi spiega come agisce questa funzione di cancellazione?

Il premio per chi risponde per primo e meglio è la pubblicazione della sua soluzione.

L'autore

  • Massimo Canducci
    Massimo Canducci vanta oltre 25 anni di esperienza nel campo dell'innovazione e della digital transformation ed è Chief Innovation Officer per Engineering Ingegneria Informatica. È docente alla Singularity University, l'Università di Torino e l'Università di Pavia, e insegna in master MBA.

Iscriviti alla newsletter

Novità, promozioni e approfondimenti per imparare sempre qualcosa di nuovo

Immagine decorativa form newsletter
Gli argomenti che mi interessano:
Iscrivendomi dichiaro di aver preso visione dell’Informativa fornita ai sensi dell'art. 13 e 14 del Regolamento Europeo EU 679/2016.