Internet e le tecnologie web sono ormai utilizzate da milioni di persone. In questa serie di articoli ci proponiamo di introdurre alcuni concetti che sono alla base delle applicazioni web e vedremo cosa offre la tecnologia Java in questo ambito. Il primo articolo è dedicato a una panoramica sull‘argomento.
Introduzione
Quasi ognuno di noi utilizza ogni giorno un browser per collegarsi ad internet. Grazie all‘avvento di internet e delle tecnologie web è oggi possibile compiere una infinita di operazioni comodamente seduti sulla poltrona di casa. Acquistare un libro o un CD, prenotare una vacanza, pagare un bollettino postale o partecipare a una discussione on-line sul proprio film preferito sono tutte attività entrate nell‘uso quotidiano di milioni di utenti del web in tutto il mondo. Non è esagerato dire che internet sia stato il più grande cambiamento nella vita comune delle persone dei paesi più industrializzati, un fenomeno paragonabile alla rivoluzione industriale o all‘invenzione del transistor che diede il via all‘elettronica moderna e all‘era dei computer. Ma quali sono le tecnologie che ci consentono di fare tutto ciò? In questi articoli cercheremo di introdurre questi concetti per poi approfondire , per i più esperti, quello che la piattaforma Java offre per costruire le applicazioni web.
Internet
Internet è un termine entrato nel linguaggio comune, che sentiamo milioni di volte ogni giorno, nei telegiornali, a scuola, negli uffici. Tutti usano internet, ma cos‘è internet? Internet non è altro che una rete di milioni di computer collegati tra di loro grazie alle reti di telecomunicazioni via cavo o senza fili (wireless). Questa definizione potrebbe sembrare riduttiva ed è ovviamente una estrema semplificazione. Ad internet si connettono client e server , con ciò distinguendo chi accede ad internet per chiedere una risorsa e chi questa risorsa la fornisce. Quando navighiamo in internet utilizziamo un internet browser, l‘applicazione software che ci consente di interagire con i milioni di server sparsi per il mondo e che è in grado di interpretare quello che il server al quale ci colleghiamo ci restituisce come risposta. Un web server consente ad un qualsiasi client collegato ad internet di effettuare una richiesta per una specifica risorsa. Il web server interpreta questa richiesta, trova la risorsa richiesta e la restituisce al client. Quello che viene restituito al client è una pagina HTML, un‘immagine, un documento , ma il meccanismo su cui si basa la navigazione web è sempre lo stesso: un client effettua una richiesta per una risorsa, il server risponde con la risorsa richiesta dal client o con un opportuno messaggio di errore se non dispone della risorsa richiesta.
Quando si parla di server si intende sia la macchina, l‘hardware, sia il software che riceve ed elabora le richieste dai client. Il client è costituito dal software che interpreta le risposte dei server, il browser internet.
Il linguaggio di internet
La prima cosa che è lecito chiedersi è come fanno milioni di macchine sparse in tutto il mondo a dialogare e a capirsi. È evidente che senza un linguaggio comune tutto ciò sarebbe impossibile o quantomeno molto difficile e costoso. Per fortuna tutti i computer collegati ad internet condividono protocolli di comunicazione e linguaggi che consentono a macchine differenti di comunicare.
Il protocollo che client e server usano per comunicare è HTTP. HTTP sta per Hypertext Transfer Protocol, protocollo per il trasferimento di ipertesti. Il protocollo HTTP si appoggia sul protocollo di rete TCP/IP; il TCP si occupa di garantire che un messaggio trasmesso arrivi a destinazione correttamente mentre l‘IP è il protocollo sottostante che trasferisce i pacchetti di byte da origine a destinazione. L‘HTTP è quindi il protocollo che ha funzionalità specifiche per la comunicazione che avviene su internet ma che si poggia sul TCP/IP per riuscire a trasmettere le informazioni da un client ad un server e viceversa.
Un client effettua quella che si chiama una HTTP request e il server risponde con una HTTP response. Questo meccanismo conversazionale di richiesta e risposta è alla base di internet e di tutte le applicazioni costruite su questa tecnologia.
Il client deve essere in grado ovviamente di interpretare la risposta HTTP inviata dal server. E qui entra in gioco un‘altra delle fondamenta del web, il linguaggio HTML. L‘HTML fornisce al browser del client le informazioni necessarie a formattare correttamente quello che proviene in risposta dal server. HTML, Hypertext Markup Language, è un linguaggio di formattazione di ipertesti e non un linguaggio di programmazione. È costituito da una serie di marcatori (tag) che forniscono informazioni sulla posizione e il formato dei vari elementi di una pagina web. L‘HTML è inviato dal server al client come parte di una risposta http.
HTTP request e HTTP response
Entrando un po‘ più nel dettaglio del meccanismo richiesta / risposta , è necessario specificare che un client può anche inviare dei dati al server in una richiesta http. In pratica una richiesta http consta di un metodo , ovvero l‘azione da compiere, dell‘indirizzo della risorsa a cui inviare la richiesta e di eventuali parametri associati alla richiesta stessa.
I due metodi più comuni per le richieste http sono GET e POST.
Il metodo GET è il metodo più comunemente utilizzato mediante il quale si richiede al server una determinata risorsa che può essere una pagina web, un documento, una foto etc..
Il metodo POST è qualcosa di più potente del GET perché consente di trasferire dati inseriti all‘interno della richiesta http.
Un punto molto importante è come sia possibile per un client individuare una singola risorsa tra i milioni di possibilità su internet.
Ad ogni risorsa è associato un indirizzo univoco detto URL, Uniform Resource Locator. L‘URL è quello che digitiamo nella barra degli indirizzi del nostro browser quando vogliamo accedere ad un qualsiasi sito web. Ogni URL ha una forma del tipo:
http://www.miosito.com:80/app1/pagine/miapagina.html
Il significato delle varie componenti di un URL è il seguente:
http://
Indica il protocollo utilizzato per la connessione, http appunto. È fondamentale; il fatto che molti browser internet lo aggiungano automaticamente ad un URL digitato nella barra degli indirizzi non significa che non serva!!
www.miosito.com
Identifica il server al quale connettersi. In realtà i server su internet sono identificati da un numero univoco denominato indirizzo IP, formato da quattro cifre separate da un punto. Dal momento che per un essere umano è molto più facile ricordare nomi significativi che numeri esiste un meccanismo in base al quale ad ognuno di questi numeri è associato un nome univoco.
80
È la porta a cui risponde il servizio web sul server invocato. Le porte non sono altro che degli identificatori di uno specifico programma, detto servizio, su di un server. Un server può fornire ad un client una miriade di servizi, che non sono altro che processi software in grado di rispondere ad opportune richieste. Per poter identificare su di una stessa macchina questi diversi servizi è necessario associare a ciascuno di essi un qualcosa di univoco: questo qualcosa è la porta. La porta standard del servizio http è la 80.
/app1/pagine/
È il percorso della risorsa richiesta sul server.
Index.html
È il nome della risorsa richiesta al server, in questo caso una pagina HTML.
Questo è il formato di tutti i link presenti nelle pagine web alle quali ci colleghiamo ogni giorno. Se non diversamente specificato quando clicchiamo su un link in una pagina , il browser effettua una richiesta con metodo GET al server. Anche ad una richiesta GET possono essere associati alcuni parametri da inviare al server. Questo può essere fatto accodandoli ad un URL, facendoli precedere dal carattere “?” e separando ogni coppia nome/valore con il carattere “&”. Ad esempio alla seguente richiesta
https://www.mokabyte.it/cms/section.run?name=mb109
è stato accodato un solo parametro chiamato “name” che ha valore “mb109”.
Come già detto il server risponde con una risposta HTTP. Gli elementi principali di una risposta sono:
- lo status code, un codice numerico standard che informa sullo stato della risposta, se è corretta, se la risorsa richiesta non è presente sul server e così via.
- il content-type, che informa il browser sul tipo di contenuto della risposta inviata, testo, immagini, HTML e così via
- il contenuto, la pagina HTML vera e propria, il contenuto informativo restituito al client.
Risorse statiche e dinamiche
In questa rapidissima carrellata abbiamo introdotto alcuni concetti che sono alla base delle tecnologie web, ma lo scopo prefissato è quello di introdurre l‘argomento specifico delle applicazioni web, quindi bisogna capire cosa distingue un‘applicazione web da un sito web.
I siti web sono nati per servire risorse statiche. Questi ricevono una richiesta per una determinata pagina web da un client, la trovano e la restituiscono così com‘è. In questo senso la risorsa è statica.
Questo meccanismo non è però sufficiente quando la risposta del server deve essere frutto di una elaborazione che varia in base ai parametri inviati nella richiesta http da un client. Se ci colleghiamo ad un sito internet che fornisce un servizio di cambio valuta e desideriamo ricevere il valore in dollari della cifra in euro inviata nella richiesta dal nostro browser, riceveremo una pagina che il server costruisce dinamicamente al variare del calcolo di conversione effettuato. Un server web non è in grado da solo di soddisfare questa esigenza poiché è nato solo per rispondere ad un client con una risorsa di tipo statico. Allora è qui che entrano in gioco le applicazioni web. Un‘applicazione web è un software in grado di compiere calcoli, elaborazioni, accessi a database, a fronte di una determinata richiesta http di un client, e di costruire dinamicamente la risposta da inviare al client stesso. La pagina HTML restituita dal server in questo caso non esiste così com‘è sul server, come risorsa statica, ma è generata a runtime in base alle elaborazioni effettuate.
Il primo esempio di applicazioni web nati su internet sono stati i cosiddetti programmi CGI, Common Gateway Interface. In genere sono programmi scritti in Perl, o in altri linguaggi come il C, che ancora oggi funzionano in moltissimi siti web. Questi programmi assolvono al compito appena indicato, ovvero di andare in esecuzione a fronte di una richiesta che il web server di per sà© non è in grado di soddisfare. Quando il web server riconosce di non essere in grado di rispondere ad una determinata richiesta attiva il programma CGI passandogli tutti i parametri contenuti nella richiesta http. Il programma CGI elabora la richiesta e costruisce la dinamicamente la pagina HTML da inviare al client. A questo punto il web server non fa altro che rispondere al client con questa pagina che a in questo momento del ciclo richiesta/risposta è del tutto equivalente ad una pagina statica, come quelle già presenti nelle cartelle del server web.
Le tecnologie web che, analogamente ai programmi CGI, consentono di elaborare dinamicamente una richiesta di un client oggi sono molto più ricche rispetto a quando furono introdotti i primi programmi CGI. Nei prossimi articoli vedremo quello che la piattaforma Java mette a disposizione per la costruzione di un‘applicazione web.
Conclusioni
In questo primo articolo abbiamo introdotto i concetti di base del web, fondamentali per la comprensione degli argomenti più specialistici che affronteremo nei prossimi articoli. Anche se gli argomenti esposti possono sembrare banali per chi ha dimestichezza con le tecnologie correlate ad internet, essi costituiscono la base indispensabile per chi si avvicina solo ora a questo complesso ed affascinante mondo. Nei prossimi articoli inizieremo invece ad entrare nel vivo delle applicazioni web iniziando ad esaminare tutto quello che Java offre per costruire siti web dinamici.
Riferimenti bibliografici
[1]
Bryan Basham, Kathy Sierra, Bert Bates, “Head First – Servlet & JSP”, O‘Reilly, 2004
[2]
Autori Vari, “The J2EE 1.4 Tutorial “, Sun Microsystems, 2003