ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Eshop | Java | Tools | Web | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

JAVA ESHOP PARTE TERZA
Un negozio online in Java e Linux - il Carrello
L'HTTP È SENZA STATO
SESSIONI
IL CARRELLO
L'ACQUISTO
CONCLUSIONI
L'AUTORE

<<< L'HTTP È SENZA STATO >>>

Il problema principale da risolvere per la realizzazione di un carrello della spesa è la mancanza di "memoria" caratteristica del protocollo HTTP. Per chiarire questo problema dobbiamo esaminare in maggior dettaglio come funziona detto protocollo. Quando un utente naviga nel Web, segue dei link o invia delle form. Il primo caso corrisponde ad una richiesta HTTP di tipo GET, mentre il secondo corrisponde generalmente ad una richiesta HTTP di tipo POST. Entrambe le richieste possono essere date in qualunque momento senza che debbano essere effettuate preventivamente altre operazioni.

In termini tecnici il protocollo HTTP è senza stato. Notare che questo non è vero necessariamente in tutti i protocolli. Per esempio il protocollo POP, che viene utilizzato per prelevare la posta elettronica da un server, mantiene uno stato. In particolare non si può prendere la propria posta senza essersi preventivamente identificati. Il protocollo richiede che vengano eseguite alcune operazioni preliminari per specificare nome utente e password, e le ricorda, ed è in base a nome utente e password che sceglie la mailbox a cui consentire l'accesso.

Il fatto che l'HTTP sia senza stato è per certi versi un vantaggio: qualunque pagina può essere richiesta in qualunque momento senza che si debbano visitare prima altre pagine. Il Web funziona così, e consente una consultazione semplice riducendo il carico di informazioni che devono essere gestiti dal browser. Inoltre in questo modo è possibile specificare la collocazione di un documento o di una generica informazione semplicemente utilizzando una stringa (l'URL) che può anche essere memorizzata e comunicata ad altri.

Questa semplicità generale però nel contesto di un negozio online è una limitazione: l'ordine che viene composto (il carrello della spesa) rappresenta una informazione proveniente dalle operazioni che l'utente ha effettuato: cioè uno stato, che l'HTTP non può mantenere. Occorre pertanto aggirare la mancanza di stato, trovando un posto dove memorizzare l'ordine che viene raccolto.

Poiché ogni pagina HTML viene generata dinamicamente, il posto più ovvio in cui inserire le informazioni di stato dell'ordine è appunto la pagina Web stessa. Le form HTML prevedono dei campi, detti HIDDEN (nascosti), che sono l'ideale per inserire informazioni di stato mantenute nelle pagine generate. In pratica ad ogni richiesta il server produce una risposta completa che contiene l'intero ordine. È quindi il browser a memorizzare l'ordine, o meglio la pagina HTML visualizzata dal browser.

Questa soluzione, seppur impiegata di frequente, non è esente da difetti. Il principale è la complessità di realizzazione: il programmatore deve, ad ogni pagina del negozio visitata, generare informazioni che consentano la memorizzazione di tutto quanto riguarda l'ordine corrente. Un secondo problema è legato alla relativa inefficienza del metodo: ad ogni passo l'intero ordine va dal browser al server e poi ritorna indietro modificato. A meno di non avere un ordine contenente migliaia di elementi raramente questo è realmente causa di inefficienze, ma non toglie che si tratta di un modo poco elegante di risolvere il problema. Il nodo reale comunque è la complessità di implementazione.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com