Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Gestire le sessioni senza l'utilizzo dei cookies

Articolo scritto da Antonio Coschignano
Pagina 1 di 2

L'importanza delle sessioni nell'implementazione di applicazioni web dinamiche è fondamentale in quanto ci consentono di mantenere uno stato tra client e server. Questa esigenza è dettata dal fatto che il protocollo HTTP essendo per sua natura stateless, perde qualsiasi informazione relativa al client non appena finisce di servire la richiesta.

Mantenere uno stato, quindi, è essenziale in diversi casi, come operazioni su un carrello della spesa, loggarsi in un sito web e tante altre funzioni che attualmente sono implementati in diversi contesti web e che necessitano di tenere traccia delle azioni affettuate dal client.

(L'articolo continua più sotto...)

Tutto ciò è reso possibile, appunto, dalla sessione che non è altro che una stringa alfanumerica generata dal server e che identifica una connessione con il client per un certo lasso di tempo.
Alla prima richiesta del client, il server invia un cookie leggero al browser che contiene l'ID della sessione relativa alla richiesta. In questo modo ad ogni operazione successiva del browser viene inviato l'ID contenuto in questo cookie ed il server tiene traccia delle operazioni che l' utente effettua nel sito web. Questo tipo di cookie viene distrutto dal browser alla chiusura della pagina.

In questa breve guida spiegheremo come agire, con le JSP, nel caso in cui un utente abbia i cookie del browser disabilitati, e quindi si verrebbe a trovare in una serie di problemi nella navigazione e null'utilizzo del sito web.

Nelle Java Server Pages una sessione non è altro che un'istanza della classe HttpSession che viene creata dal server, e passata come riferimento alla servlet tramite oggetto HttpServletRequest. Vediamo come ottenere un' istanza all' interno di una servlet:

....
protected void processRequest(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException {
  ...
  HttpSession session = request.getSession(true);
  ...
}
...
Il valore true che passiamo al metodo getSession() sta ad indicare di creare la sessione in caso ancora non è stata creata, altrimenti si passa il valore false. In una pagina jsp invece possiamo utilizzare direttamente l'oggetto implicito session, che vedremo meglio fra poco in un esempio pratico.

Sessioni senza cookie

Rendere la nostra applicazione web indifferende nei riguardi dei cookies, cioè in grado di agire allo stesso modo a prescindere se i cookies sono abilitati o meno è un'operazione abbastanza semplice, se si prende in considerazione questo fattore in fase di progettazione. La tecnica che vi mostro viene definita URL-rewriting, e consiste nell'aggiungere a tutti i link contenuti nelle pagine del nostro sito l'ID di sessione tramite il metodo encodeURL della classe HttpServletResponse:

public String encodeURL(String url)
Il vantaggio di questo metodo sta nel fatto che l'ID di sessione viene agganciato al link solo nel caso in cui i cookies non sono abilitati, in caso contrario il metodo non apporta nessuna modifica al link. Quindi condizione necessaria è quella di costruire tutti gli url (interni ovviamente) dell'applicazione web con il metodo encodeURL. Ecco come appare un url in caso di cookies disabilitati:
http://localhost/testsession.jsp;jsessionid=fbf1df21c007ffd8f5a73382eb2a

Corsi
Corso HTMLCorso HTML
Il linguaggio di marcatura per il Web. A partire da 29 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso Web MarketingCorso Web Marketing
Promozione siti, motori di ricerca e Marketing. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122