MokaByte
Numero 30 - Maggio 1999
|
||||
|
|
con JSP |
||
|
|
|
||
|
||||
Dopo l’introduzione fatta il mese scorso, affrontiamo questa volta alcuni aspetti legati all’implementazione di JSP |
Le Java Server
Pages sono una tecnologia di recente introduzione di cui abbiamo avuto
modo di parlare con un articolo introduttivo il mese scorso [JSP1].
Per chi non avesse letto la puntata precedente, ricordo che si tratta di un sistema di scripting simile alle ASP di Microsoft, in grado di unire HTML, servlet, Enterprise JavaBeans ed applicazioni lato server, per realizzare pagine web interattive a contenuto dinamico. Dopo la parte dedicata al funzionamento ed alla sintassi delle JSP, questo mese, tra le altre cose, vedremo come realizzare una tipica applicazione che si trova molto frequentemente in rete: parleremo infatti di acquisti on-line per mezzo del cosiddetto "carrello della spesa", ovviamente virtuale. Affronteremo anche l’aspetto del software che attualmente è possibile utilizzare per mettere in piedi una struttura JSP: a tal proposito, subito dopo aver scritto l’articolo precedente, mi sono arrivate molte mail e news relativamente al rilascio di nuovi prodotti compatibili con la tecnologia JSP, dimostrazione che il settore è letteralmente in ebollizione, cosa che fa ben sperare per il futuro. I vari JRun di LiveSoftware [Jrun], JView di Apache Project [JView], JavaWebServer di Sun [JWS] sono solo alcuni esempi dei nuovi prodotti a disposizione dello sviluppatore; anche Lotus Domino [R5] pur non essendo un prodotto esclusivamente pensato per l’uso dei servlet, ne fornisce il supporto ed anzi sono in arrivo molte interessanti novità in tal senso con la prossima versione. Il PageCompilerServletAbbiamo detto che per poter essere utilizzate le JSP necessitano di un web server che le supporti, o (caso sempre più frequente) di un application server che ne estenda le funzionalità.Chi però ha fatto un giro sul sito della Sun ed ha letto un po’ di documentazione relativa al Java Web Server, si sarà reso conto che in realtà ciò non è completamente vero. Consultando infatti la documentazione relativa alla tecnica della compilazione di pagine HTML (una specie di Cascading Style Sheet fatto in Java), si comprende che il tutto poggia non su strani dispositivi o software, ma semplicemente su un piccolo servlet, il PageCompilerSerlvet, il quale svolge molti servizi, fra cui quello della compilazione di pagine HTML contenenti script Java. In realtà si tratta dello stesso servlet che ad esempio il WebSphere Application server utilizza per gestire le JSP. Effettuando due prove ci si può rendere conto che per far funzionare una pagina JSP in realtà è sufficiente un web server che supporti i servlet ed utilizzare il PageCompilerSerlvet ogni volta che venga effettuata una invocazione ad una pagina JSP. Ad esempio una stringa del genere (da inserire nell’opportuno file di configurazione dei web server) *.jsp PageCompilerServletpermette di dire al web server che ogni pagina di tipo JSP non deve essere inviata direttamente al browser, ma deve essere processata dal PageCompilerServlet (questo è il motivo per cui se si apre direttamente una pagina JSP con il browser non succede niente). Effettivamente tale situazione è piuttosto ovvia, anche pensando a come sono strutturati tali oggetti: il PageCompilerServlet infatti esegue un parsing del codice HTML della pagina JSP, e provvede a compilare tutto il codice Java che vi è inserito, oppure a mandare in esecuzione i vari bean o servlet referenziati. Ovviamente l’utilizzo di un application server ottimizza l’utilizzo di tale servlet, ed offre ulteriori funzionalità, come la capacità di controllare la presenza di modifiche nel codice e di ricompilare solo quando necessario. Anche se questa scoperta potrà deludere l’utente che sperava in una nuova rivoluzione tecnologica, si deve tenere conto che, rispetto all’utilizzo di una applicazione monolitica, tale soluzione permette una maggiore flessibilità: dato che infatti tutto il lavoro relativo alle JSP viene svolto da un piccolo componente, il servlet appunto, si possono eseguire modifiche o upgrade del sistema semplicemente sostituendo pochi file .class. È possibile quindi, nel caso si abbiano sufficienti conoscenze, implementare una propria versione di JSP, in modo da aggiungere particolari funzionalità o personalizzare il comportamento del web server. Questa in fondo è stata fin dall’inizio la filosofia dei servlet, anche se nessuno ha mai detto apertamente che poteva essere utilizzata per realizzare qualcosa di veramente nuovo, come invece le JSP si propongono di essere. Possibili architetture Vediamo adesso quali sono le possibili soluzioni che si possono adottare per la creazione di un sito web basato su JSP. Partendo dai vari web server più diffusi ed utilizzati, tralasciamo per un momento le considerazioni relative al PageCompilerServlet, e concentriamo l’attenzione sulle soluzioni "chiavi in mano":
Nel Riquadro 2 sono riportati alcuni prodotti meno noti che offrono il supporto per servlet ed in alcuni casi anche JSP. Carrello della spesaQuello del mantenimento dello stato è uno degli aspetti che ogni programmatore web ha dovuto prima o poi risolvere: si tratta di dover mantenere traccia delle varie operazioni effettuate dall’utente al passare da una pagina HTML ad un’altra, cioè al susseguirsi delle varie invocazioni CGI.Anche i servlet lavorano in parte con la modalità CGI, ma offrono qualche vantaggio in più, grazie al dualismo offerto dai metodi init() e service(), e grazie anche alla presenza di una JVM alle spalle; per mantenere lo stato anche con i servlet però è necessario un po’ di lavoro aggiuntivo. Vediamo invece, per mezzo delle JSP, come possiamo risolvere questo problema in maniera più elegante: prendiamo in considerazione un caso tipico, quello del carrello della spesa utilizzato su molti siti web che offrono servizi di acquisti on-line. In questo caso l’utente può navigare fra le varie pagine del sito e memorizzare passo per passo tutta la merce comprata in un contenitore (il carrello appunto) che verrà utilizzato sia per visualizzare la spesa che per effettuare il conto finale. Il grosso vantaggio, come abbiamo avuto modo di vedere il mese scorso, è che in questo caso la presenza di soggetti differenti (HTML, EJB, servlet) permette di diversificare i vari compiti, semplificando la loro realizzazione. In questo caso possiamo memorizzare tutti i dati nel bean accedendovi con lo script JSP, evitando di dover adempiere a questo compito con i servlet ed HTML. L’esempio che prendiamo in esame è costituito dai seguenti file:
Interessante come la chiamata http venga passata direttamente al bean e per mezzo della istruzione SETFROMREQUEST beanproperty="*"
// il valore null per submit, implica che l’utente ha premuto
Meglio di ASPQuando mi trovo ad illustrare le caratteristiche di nuovi oggetti Java come i servlet, mi viene chiesto quanto sia conveniente adottare tale soluzione a scapito di altre più diffuse o più semplici ed immediate da realizzare. Ad esempio nel caso dei servlet mi si chiede quale sia la maggior differenza rispetto alle ASP e cosa convenga utilizzare. Per rispondere a tali quesiti occorre fare un po’ di chiarezza.Per prima cosa le ASP non si possono mettere a confronto con i servlet: mentre infatti la prima è essenzialmente una tecnica di scripting, i secondi sono veri e propri programmi Java che si interfacciano con il resto del sistema. Adesso che Sun ha rilasciato le JSP, possiamo dire che esiste un corrispettivo in ambito Java delle ASP. In entrambi i casi (JSP ed ASP) si utilizza infatti un linguaggio di script per "incollare" componenti compilati (OCX in un caso, Enterprise JavaBeans e servlet nell’altro). Ma quali sono i pro ed i contro di entrambe le alternative? Le ASP e tutto ciò che vi è collegato, hanno il grosso vantaggio della piattaforma di sviluppo, ormai consolidata e di facile utilizzo grazie a prodotti ormai maturi. In tal senso nel caso di JSP, ancora molto deve essere fatto. Le ASP però non sono portabili, e limitano alla piattaforma Windows (NT) che, seppur con innegabili vantaggi, ha anche mostrato le sue limitazioni per lo sviluppo di sistemi Internet robusti. JSP, servlet EJB e tutta la piattaforma Java invece sono del tutto svincolati dalla particolare scelta del sistema operativo ed hardware. A tal proposito si potrebbe pensare che la portabilità possa essere una caratteristica più importante per lo sviluppo di soluzioni lato client e non server; sempre più spesso però entro in contatto con realtà, in cui la scelta di Java sul lato server è stata fatta non tanto per permettere la portabilità immediata del sistema (come ad esempio avviene con le applet), ma piuttosto per non pregiudicare in futuro un passaggio a sistemi differenti, rendendo in tal modo il software un po’ più longevo. In tal senso le innate doti di scalabilità di Java, sono un punto a favore invidiabile. Infine si tenga presente che per poter scrivere OCX o simili, si deve avere una certa conoscenza della tecnologia DCOM e della piattaforma sottostante, cosa che invece non è affatto necessaria con Java grazie al processo di astrazione che offre. Mi sentirei di consigliare le Java Server Pages in tutti quei casi in cui si voglia implementare una struttura solida, sicura e portabile che si debba interfacciare con del software già esistente e funzionante (non solo Java ma anche legacy grazie a CORBA). ConclusioniAl termine di questa lunga trattazione in due puntate sulle Java Server Pages, cosa possiamo concludere? Vediamo di fare una sintesi dei punti fondamentali:
Bibliografia[JSP1] "Web a contenuto dinamico con Java Server Pages - I parte" di Giovanni Puliti, Computer Programming XXX marzo 1999;[JSPSun] JSP Public Review 0.92 - Documentazione ufficiale della Sun presso http://java.sun.com/products/jsp; [JRun] JRun e JRun Pro sono disponibili sul sito LiveSoftware (www.livesoftware.com); [JView] Informazioni sul progetto Java di Apache presso http://java.apache.org; [JWS] http://www.sun.com; [R5] www.lotus.com; [SExec] ServletExec 2.0 di New Atlanta Communications http://www.newatlanta.com/; [JSPML] Mailing list dedicata alle JSP JSP-INTEREST@JAVA.SUN.COM, per iscrizioni mandare un messaggio listserv@java.sun.com con "help" nel body del messaggio. |
|
||
|
||
MokaByte ricerca
nuovi collaboratori
|
||
|