LIPS - Laboratorio di Ingegneria per la Produzione del Software
a- a+

Introduzione

In questa sede si intende descrivere JSP ( JavaServer Pages ), una nuova tecnologia che permette di creare applicazioni difacile sviluppo, accesso ed impiego per il Web. La tecnologiaJava si è dimostrata insuperabile quanto aconnettività , affidabilità ,scalabilità e sicurezza : applicazioni Java quali iservlet e le stesse pagine JSP offrono una tecnologia sicura, solida ed indipendente dalla piattaforma su cui operano, ingrado di sfruttare le potenzialità di Java per losviluppo di funzionalità che spaziano dal semplicesviluppo di siti con contenuti dinamici al vero e proprioe-commerce. Dal punto di vista storico è interessantenotare che il World Wide Web non è nato come ambienteper l ' esecuzione di applicazioni mentre oggi Internetrappresenta un mercato economico globale : infatti stadiventando il centro predominante per lo scambio di beni ,servizi ed informazioni sia per le imprese che per i singoliconsumatori. Conseguenza diquest 'evoluzione è che oggi le applicazioni Websono uno degli elementi principali di Internet . La crescitadel modello di programmazione Web si può organizzarein diverse fasi tecnologiche . Il primo modello operativoprevedeva la presenza di un server Web che non faceva altroche spedire documenti HTML su richiesta di un client ( ilprotocollo in cui il browser Web richiede il documentoè l ' HTTP ). In quest ' ambiente i contenutierano statici ,cioè non cambiavano mai se non tramiteun intervento diretto di un operatore , di un uomo .



Fig: Il modello a server statico

 

Se i documenti fossero stati generati automaticamente da unprogramma il browser non se ne sarebbe accorto in quanto ilrisultato di una richiesta sarebbe stato comunque costituitoda dati HTML ; inoltre la richiesta avrebbe potutocomprendere dei parametri incorporati nell 'indirizzo URL. Questo suggerisce che una richiesta HTTP può essereinterpretata come una query ad un database e che i risultatidella query possono essere utilizzati per costruire in mododinamico un documento HTML. In quest ' ottica nacque unanuova specifica chiamata CGI ( Common Gateway Interface ).

Fig: Contenuti dinamici generati da uno script CGI

Quando un programma CGI viene richiamato da un server Weblegge i parametri e le intestazioni inviategli con larichiesta ( sotto forma di coppie chiave valore e variabili d' ambiente rispettivamente ) , svolge le attivitàspecificate dall' applicazione ( normalmente un accessoad un database ) e genera una risposta HTTP .La rispostaviene inviata al server Web che ha effettuato la richiestacome se si trattasse di un normale documento HTML statico .Il grosso difetto del sistema CGI è che crea un nuovoprocesso per ogni richiesta HTTP: questo rappresenta unproblema quando il traffico è elevato .

Un significativo miglioramento venne introdotto dallarealizzazione , nel 1997 , dell' API Java Servlet seguitarapidamente dall ' API JSP( Java Server Pages ) . Questetecnologie per server Web hanno combinato tutte lepotenzialità di Java con la connettività adatabase , l ' accesso alle reti , le operazionimultithread e , soprattutto , un nuovo modello dielaborazione . I servlet e le pagine JSP operano da un 'unica istanza che rimane in memoria e utilizza piùthread per rispondere simultaneamente a più richiestedi servizi . Peraltro i servlet e le pagine JSP possonoutilizzare l ' ambiente J2EE ( Java 2 Enterprise Edition) che consente di realizzare applicazioni sofisticate esolide .




Fig: Applicazioni dinamiche che utilizzano servlet , JSP eJ2EE



I servlet sono classi Java che estendono le funzionalità di un server Web generando dinamicamente le pagine Web . Un ambiente runtime chiamato servlet engine gestisce il caricamento e lo scaricamento dei servlet e collabora con il Server Web per dirigere le richieste ai servlet e per rinviare il loro output ai client Web . Fin dalla loro introduzione i servlet sono diventati l ' ambiente predominante per la programmazione Java del server . Essi presentano numerosi vantaggi :



  • come già detto migliori prestazioni in quanto dopo la prima richiesta rimangono in memoria indefinitamente : la servlet engine carica una singola istanza della classe del servlet ed esaudisce le richieste utilizzando una serie di thread disponibili

  • Semplicità poiché , al contrario degli applet Java che operano su una macchina virtuale Java generata dal browser Web , i servlet operano nell ' ambiente controllato del server e comunicano con il client utilizzando comandi HTTP eliminando problemi di compatibilità e di sicurezza .

  • Memorizzazione delle sessioni HTTP: i server HTTP non sono dotati di funzionalità in grado di ricordare i dettagli delle precedenti richieste provenienti dallo stesso client ( spesso si dice che il protocollo HTTP non ha stati , ovvero non passa alcuna informazione da una richiesta alla successiva ); l' API Servlet fornisce una classe HTTPSession che supera questa limitazione .

  • Accesso alla tecnologia Java : i servlet , essendo applicazioni Java , hanno un accesso diretto a tutte le funzionalità di Java , come la gestione dei thread , l ' accesso alla rete e la connettività con i database .

Le pagine JSP che vengono prodotte automaticamente da unservlet , ereditano tutti questi vantaggi .