Introduzione alle pagine Web e al linguaggio HTML di Alessandro Bagaglia e Marco Baioletti versione per il corso di Laboratorio Statistico-Informatico II A.A. 2002-03 Introduzione e terminologia Introduzione Internet ha avuto uno sviluppo enorme in questi ultimi anni, grazie soprattutto all’incredibile impulso dato dall’introduzione del servizio WWW (World Wide Web), il servizio di accesso alle pagine Web, diventato così importante che nel linguaggio corrente Internet è diventato sinonimo di WWW. Quasi tutti i servizi di Internet, tra questi la posta elettronica (e-mail), il trasferimento file (FTP), l’accesso a risorse di calcolo remote (Telnet), le newsgroup, le chat-line (IRC) e ovviamente anche WWW, sono gestiti attraverso un meccanismo chiamato client-server, in cui due computer (o meglio due programmi che girano in due computer), detti rispettivamente client e server, comunicano fra di loro per consentire all’utente di accedere al servizio. L’utente solitamente utilizza il computer che fa le veci del client, mentre il computer che amministra il servizio o detiene le risorse in gioco fa le veci del server. Il client è la parte attiva, cioè quella che in base alle esigenze dell’utente contatta il server e gli richiede di fornirgli un servizio. Il server è la parte passiva, cioè quella che resta in attesa di eventuali chiamate da parte di uno o più client e quando arrivano queste richieste tenta di soddisfarle. Pertanto mentre il client può essere attivato solo quando l’utente ne ha effettivamente bisogno, il server deve teoricamente essere sempre in funzione, se si vuole che sia in grado di ricevere le richieste da qualsiasi client in qualsiasi momento. Nel caso del servizio WWW, le risorse in gioco sono le pagine Web, il programma del client si chiama user agent e il server si chiama server Web. Il servizio WWW è stato inizialmente ideato nel 1989 da Tim Berners Lee, un fisico del CERN di Ginevra, come strumento per la comunicazione tra gli scienziati dei vari gruppi di ricerca. Nel 1993, con la creazione di Mosaic, il primo browser ideato, ebbe inizio la diffusione di WWW come strumento di comunicazione e di informazione. Uno dei motivi dell’attuale importanza e della velocità con cui vengono inserite nuove informazioni e creati nuovi siti sta nella possibilità di enormi applicazioni in campo commerciale, come ad esempio il commercio elettronico, oltre alla grande versatilità e alla facilità di uso. Terminologia In questa sezione introdurremo i termini più importanti per una corretta comprensione di tutti gli aspetti del funzionamento del servizio WWW. Browser o User Agent Un browser è il programma “client” del servizio WWW. I browser attualmente più diffusi sono Internet Explorer della Microsoft e Netscape Communicator della Netscape. Esistono diversi altri browser (Opera, Lynx, ecc.) la cui diffusione è però resa problematica dal fatto che attualmente i browser sono distribuiti gratuitamente. I compiti di un browser sono molteplici. Innanzitutto esso deve gestire le richieste dell’utente. La richiesta principale è quella di ottenere una pagina Web da Internet, che può principalmente verificarsi in due modi: l’utente ha digitato un indirizzo nella casella dell’indirizzo del browser, oppure ha cliccato su un link. A questo punto il browser legge l’indirizzo della pagina, ne estrae l’indirizzo del “server” e lo contatta chiedendogli la pagina. Il server gli risponde inviandogli la pagina richiesta, o un messaggio di errore se la pagina non è disponibile. Altre condizioni di errore si verificano se non si riesce a trovare il server, perché il server non esiste, o se il server non risponde entro un certo tempo limite (time-out), perché magari ci sono problemi di linea. La pagina richiesta, una volta che è arrivata a destinazione, viene interpretata dal browser in modo da essere visualizzata. Infatti le pagine sono solitamente scritte in HTML, ma possono anche contenere codice Java, JavaScript, VBScript, ActiveX, ecc. E’ necessaria una fase di interpretazione dei comandi HTML in modo da poter comporre sullo schermo le varie parti della pagina (scritte, immagini, effetti visivi, ecc.), in quanto il linguaggio HTML non contiene direttamente una descrizione grafica della pagina (cioè una pagina non è in generale inviata come immagine) ma indica come deve essere visualizzata, lasciando al browser una certa libertà di poter decidere su alcuni particolari. Le parti scritte in Java, Javascript, ecc. consentono di ottenere degli effetti non previsti nel linguaggio HTML o di svolgere alcune funzioni normalmente non supportate dal browser. Ad esempio si possono ottenere effetti di animazione, convalida dei dati immessi, calcoli matematici, ecc. Esiste inoltre la possibilità di creare delle pagine Web con strumenti diversi, quali Macromedia Flash, che produce pagine non in formato HTML, ma in formati diversi che poi devono essere interpretati da parti aggiuntive (le cosiddette plug-in) del browser. Le plug-in possono anche servire per poter trattare anche parti della pagina non standard: ad esempio normalmente solo le immagini nei formati grafici GIF, JPEG e PNG sono direttamente visualizzabili dal browser, mentre gli altri tipi di formato grafico utilizzano una plug-in apposita, che deve essere già installata al momento della visualizzazione della pagina. Un browser permette inoltre di svolgere altre funzioni: il salvataggio su disco e la stampa delle pagine scaricate, la gestione dei preferiti (o bookmark), cioè una specie di agenda dei siti più importanti per l’utente, la gestione della cronologia (o history), in cui vengono memorizzati gli indirizzi degli ultimi siti visitati, la gestione della cache, una piccola memoria su disco in cui si memorizzano le ultime pagine (e loro parti) scaricate, ed infine negli ultimi browser la gestione della posta elettronica e dei newsgroup. Server Web Il server Web è la controparte server del servizio WWW. Esistono svariati server Web sul mercato, i più famosi sono Apache (per Unix/Linux) e IIS – Internet Information Service della Microsoft (per Windows). Si tratta di un programma che resta in attesa continua di eventuali messaggi da parte di qualsiasi browser (o altri programmi che gestiscono le pagine Web, come gli spider dei motori di ricerca) che gli chieda di inviargli una pagina da lui gestita. Il server Web deve vedere se la pagina richiesta è presente nel proprio disco e se è disponibile per la pubblicazione. Se queste condizioni sono verificate allora la pagina richiesta viene spedita al browser, altrimenti gli invia un messaggio. Un server Web può anche richiedere delle informazioni al browser, ad esempio per accedere a siti a pagamento, è necessario che l’utente sia autenticato, cioè l’utente deve digitare username e password. Se un browser vuole ottenere una pagina dinamica, il server Web deve eseguire il programma che in base alle richieste dell’utente deve creare la pagina desiderata. Poiché un server Web deve essere in grado di rispondere a molti browser, anche contemporaneamente, solitamente viene installato su macchine abbastanza potenti. Pagina Web La pagina Web è la più piccola informazione accessibile su Internet con il servizio WWW, anche se una pagina può essere composta da più parti (file) separati, come le immagini e le animazioni. Sito Un sito è una collezione di più pagine Web memorizzate sullo stesso server (anche se ciò non è strettamente indispensabile) e collegate fra di loro attraverso dei link. Un sito ha solitamente una pagina iniziale, da cui dovrebbe essere facilmente per l’utente raggiungere qualunque pagina presente nel sito. Il modo in cui le pagine di un sito sono collegate tra di loro può determinare diverse strutture di sito. La struttura più semplice è quella lineare, in cui esiste una prima pagina, una seconda pagina, una terza e così via ed ogni pagina è collegata con quella successiva e, al più, con quella precedente. Una struttura più complessa è quella gerarchica o ad albero: esiste una pagina iniziale, collegata con diverse pagine di primo livello, a loro volta collegate con pagine di secondo livello, e così via. Questa struttura viene utilizzata quando si traduce un libro in formato HTML, in cui esiste una strutturazione in capitoli, sezioni, sottosezioni, ecc. La struttura più comunemente usata è quella a reticolo, in cui ogni pagina è collegata con quelle che contengono contenuti che hanno una certa relazione con essa Server proxy e cache Nello scenario standard di interazione tra client (browser) e il server Web si può talvolta frapporre un server aggiuntivo che può svolgere funzioni di server proxy e di cache. In questo meccanismo il browser non comunica direttamente con il server Web, ma invia le proprie richieste al server proxy, che decide se inoltrare o no le richieste al server Web e se consegnare oppure le no le risposte al browser. Ciò può servire a limitare l’accesso ad Internet, vietando per esempio di entrare in determinati siti. Un’ulteriore servizio è quello di cache, in cui il server proxy può memorizzare su disco locale le pagine richieste da tutti gli utenti a lui collegati, di modo che se un secondo utente richiede la stessa pagina, il server proxy gli spedisce direttamente quella contenuta nella memoria cache senza avere il bisogno di scaricarla nuovamente dal server Web. FireWall Un firewall è in genere un dispositivo in grado di filtrare le richieste in entrata ed in uscita su una particolare risorsa (una scheda di rete in generale). Il filtro eseguito dal firewall non è limitato alle risorse Web, ma a tutte le comunicazioni che si svolgono su una particolare interfaccia di rete. I firewall possono essere dei particolari disposivi con un firmware precaricato e configurabile, oppure dei server dedicati che usano un software per agire da firewall. Dettaglio URI o Universal Resource Identifier rappresenta il modo in cui una risorsa web viene richiesta; si compone di 3 parti: 1)il tipo di meccanismo usato per accedere alla risorsa 2)l'indirizzo della macchina che contiene la risorsa 3)il nome/percorso della risorsa richiesta http:// www.xxxxxx.com/ index.html L'esempio sopra mostrato è un URI assoluto; un esempio di URI relativo, ovvero la richiesta di una risorsa presente all'interno della stessa macchina è ../../immagine.jpg Tutti gli elementi presenti in HTML che referenziano un oggetto disponibile via Web utilizzano quindi l'URI. L'HTML (HyperText Markup Language) è il linguaggio comune usato nel Word Wide Web o www per : 1)Pubblicare documenti 2)Leggere documenti 3)Inviare e mostrare dati remoti 4)Includere elementi per pubblicare video, animazioni ecc. Negli ultimi anni l'HTML è sempre più usato per inviare e/o leggere dati presenti in banche dati remote. Con l'utilizzo di linguaggi di scripting client-side (maggiormente JavaScript) si crea quello che viene definito DHTML o HTML a contenuto dinamico. Come già accennato, i software atto ad interpretare un documento scritto secondo le specifiche HTML è chiamato HTML User Agent (in gergo browser), questo software legge il documento, lo interpreta ed infine lo rappresenta a video. Dal momento che il produttore del software non sempre segue le specifiche, si possono verificare casi nei quali due user agent diversi rappresentano il documento in maniera differente. STRUTTURA DI UN DOCUMENTO HTML Un documento HTML è diviso in tre sezioni: 1)una riga contenente le informazioni sulla versione 2)una sezione di dichiarazione di intestazione o HEAD 3)un corpo che contiene il documento BODY o FRAMESET Un semplice esempio di un documento HTML completo può essere il seguente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.xxxx.com/index.html"> <HTML> <HEAD> <TITLE>Esempio di documento HTML</TITLE> </HEAD> <BODY> <P>Testo qualsiasi </BODY> </HTML> La prima riga fornisce delle informazioni allo User Agent se il documento utilizza ad esempio degli attributi deprecati o dei frame. L'elemento HTML (ormai opzionale) indica l'inizio della sezione HTML vera e propria e si chiude con la fine del documento. L'elemento HEAD contiene informazioni sul documento come il titolo ed altri valori che possono essere utili ai motori di ricerca. Il TITLE deve sempre essere presente ed indica il titolo del documento. Per specificare le parole chiave e il contenuto della pagina Web (informazioni usate più che altro dai motori di ricerca) si usano i tag META <META NAME="KEYWORDS" CONTENT=”parole chiave della pagina”> <META NAME="DESCRIPTION" CONTENT="descrizione della pagina”> Inizieremo ora una serie di sezioni distinte atte ad illustrare i TAG più utilizzati: I tag fondamentali di formattazione Intestazioni Esistono sei livelli di intestazioni, cioè di tipi di titoli inseribili nella pagina <H1> Intestazione di primo livello </H1> <H2> Intestazione di secondo livello </H2> <H3> Intestazione di terzo livello </H3> <H4> Intestazione di quarto livello </H4> <H5> Intestazione di quinto livello </H5> <H6> Intestazione di sesto livello </H6> L’intestazione di primo livello viene visualizzata con caratteri molto grandi, quella di secondo livello con caratteri grandi, ma più piccoli di H1, fino ad arrivare a H6, che dovrebbe essere poco più grande del testo normale. Formattazione del carattere Per impostare la formattazione del carattere si usa il tag FONT con la sintassi <FONT FACE=”nome del font” COLOR=”colore” SIZE=grandezza> testo </FONT> Gli attributi FACE, COLOR e SIZE sono tutti facoltativi e ognuno di essi può essere specificato oppure no (e in tal caso si intende che quella caratteristica non viene cambiata). FACE modifica il tipo di carattere (il font nel senso letterale del termine). Ad esempio <FONT FACE=”arial”> Scritta in Arial </FONT> COLOR definisce il colore dei caratteri. Il colore viene specificato in due modi. Per alcuni colori molto usati basta scrivere il colore in inglese (AQUA, BLACK, BLUE,FUCHSIA, GRAY,GREEN, LIME, MAROON, NAVY, OLIVE, PURPLE, RED, SILVER, TEAL, WHITE e YELLOW). Ad esempio <FONT COLOR=”Red”> Scritta in rosso </FONT> Tutti gli altri colori sono descritti con una codifica standard detta RGB. In pratica il colore viene decomposto nelle componenti fondamentali: rosso, verde e blu. Ogni colore è quindi visto come una percentuale di rosso, di verde e di blu, ad esempio il giallo è 100% rosso, 100% verde e 0% blu. Le percentuali sono poi moltiplicate per 255 ed espresse nel codice esadecimale. Ad esempio il giallo è FF FF 00. Per inserire il codice RGB si premette un carattere #. Ad esempio <FONT COLOR=”#FFFF00”> Scritta in giallo </FONT> SIZE imposta la grandezza dei caratteri. Ad esempio <FONT SIZE=”6”> testo scritto molto piccolo </FONT> <FONT SIZE=”36”> testo scritto molto grande </FONT> La grandezza è un numero positivo compreso tra 1 (più piccolo) e 7 (più grande) o un numero relativo compreso tra –7 e +7. Il numero relativo indica se aumentare (ad esempio +2) o diminuire (ad esempio –1) la grandezza rispetto ai caratteri precedenti. Per rendere dei caratteri in grassetto, in corsivo o sottolineato si usa rispettivamente <B>caratteri da mettere in grassetto </B> <I>caratteri da mettere in corsivo </I> <U> caratteri da sottolineare </U> Formattazione del paragrafo Per andare a capo si usa il tag <BR> poiché l’andata a capo in un testo viene considerato come uno spazio. Per delimitare un paragrafo si usa <P> testo del paragrafo </P> Alla fine del paragrafo viene lasciata una linea vuota. Per decidere l’allineamento a sinistra, centrato e a destra si usano rispettivamente <P ALIGN=LEFT> testo allineato a sinistra </P> <P ALIGN=CENTER>testo centrato </P> <P ALIGN=RIGHT> testo allineato a destra </P> Elenchi Per creare un elenco puntato si usa <UL> <LI> elemento </LI> <LI> elemento </LI> ... <LI> elemento </LI> </UL> Ogni elemento dell’elenco sarà preceduto da un pallino (o da un altro simbolo a scelta e indicato nel tag UL con l’attributo TYPE, che può assumere i valori DISC, CIRCLE, SQUARE). Per creare un elenco numerato si usa <OL> <LI> elemento </LI> <LI> elemento </LI> ... <LI> elemento </LI> </OL> Ogni elemento dell’elenco sarà preceduto da un numero progressivo (o con un altro sistema a scelta e indicato nel tag OL con l’attributo TYPE). Gli elementi di formattazione dl testo visti finora sono utilizzati moltissimo per la scrittura di pagine HTML ed è pertanto necessario conoscerli. Con l'introduzione delle specifiche HTML40, l'utilizzo di tali elementi è stato dichiarato obsoleto. CASCADE STYLE SHEETS (CSS) Prima di illustrare i singoli TAGS, è necessaria una breve introduzione sui fogli stile o file con estensione css dal momento che in HTML 4.0 l'uso di questi è preferito, come già accennato, rispetto ai deprecati riferimenti agli stili diretti. Un foglio stile è un semplice file di testo, strutturato in varie sezioni, dove vengono scritte delle classi di stile grafico che possono essere utilizzate all'interno della nostra pagina HTML. Mentre in passato si preferiva decidere colore e dimensione del testo, tabelle ed altro scrivendo direttamente all'interno di ogni singolo TAG come suo attributo, ora si progetta il sito web considerando che tutti gli stili usati verranno scritti in un foglio stile e richiamati da quegli elementi che ne devono fare uso; questa pratica porta molti vantaggi fra i quali: Uniformità degli stili applicati Riduzione del codice da scrivere Sostituzione dell'aspetto grafico di centinaia di documenti modificando un singolo file. Riutilizzo dello stesso foglio stile per più siti Un esempio del contenuto di un foglio stile può essere: .intestazione_tabella { font-size : 10pt; font-family : Comic Sans MS; font-weight : bold; font-style : normal; color : #FFFFFF; background-color : #006600; } .corpo_tabella_bold { font-size : 10pt; font-family : Comic Sans MS; font-weight : bold; font-style : normal; color : #000000; background-color : #FFFFFF; } .corpo_tabella_normal { font-size : x-small; font-family : Comic Sans MS; font-weight : normal; font-style : normal; color : #000000; background-color : #FFFFFF; } Dall pagina HTML il foglio stile desiderato va referenziato con una istruzione del tipo: <link rel="stylesheet" type="text/css" href="./mio_stile.css"> e poi da ogni singolo TAG che richiede un tipo di formattazione contenuta nel css è necessario richiamarla con una istruzione del tipo: font class="intestazione_tabella" <BODY></BODY> Il TAG BODY delimita il corpo del documento, a parte numerose funzioni per la formattazione del testo questo è un TAG molto semplice e non necessita di ulteriore approfondimento. <TABLE></TABLE> Le Tabelle sono gli elementi più usati in HTML per organizzare testi, immagini ed altro, anche se ciò può comportare almeno due inconvenienti: il contenuto di una tabella viene mostrata a video dopo che tutta la tabella è stata caricata e nei browser non visuali la tabella crea problemi; per ovviare a questi inconvenienti andrebbero usati gli style sheets; le tabelle possono essere nidificate. L'organizzazione generica di una tabella è costituita dai TAG TABLE, TR e TD dove TR sta per TABLE ROW o riga di tabella e TD sta per TABLE DATA CELL o cella di dati. Quindi un utilizzo generico dei tre elementi può essere rappresentato dal seguente esempio: <TABLE> <TR> <TD>Ciao</TD> </TR> </TABLE> In questo caso ovviamente il risultato ottenuto è lo stesso che se la tabella non fosse stata presente in quanto non sono state sfruttate le opzioni di formattazione o attributi, che per TABLE possono essere: WIDTH = larghezza della tabella BORDER = indica se la tabella utilizza un contorno CELLSPACING = spaziatura fra le celle della tabella CELLPADDING = spaziatura interna alle celle ALIGN = allineamento della tabella BGCOLOR = colore di sfondo della tabella che va espresso secondo lo specchietto A L'elemento opzionale CAPTION fornisce il titolo della tabella ed è seguito dagli elementi sempre opzionali COL e COLGROUP che specificano la larghezza delle colonne ed il raggruppamento. Seguono poi gli elementi THEAD, TFOOT e TBODY con gruppi di righe, contengono rispettivamente righe di intestazione e di chiusura mentre il TBODY indica il gruppo principale di righe della tabella. Un gruppo di righe contiene poi gli elementi TR per ogni riga ed ogni riga contiene un TH o TD, elementi per le testate di cella o delle di dati. In una tabella deve essere presente almeno un elemento TBODY, anche se non dichiarato esplicitamente; se sono presenti più elementi THEAD o TFOOT il TBODY va dichiarato. <TABLE> <TR> <TH>Abbreviato</TH> <TH>Forma lunga</TH> </TR> <TR> <TD>AUT</TD> <TD>Autore</TD> </TR> <TR> <TD>ARG</TD> <TD>Argomento</TD> </TR> <TR> <TD>TIT</TD> <TD>Titolo</TD> </TR> </TABLE> La stessa tabella può essere scritta in forma più “ricca” raggruppando le righe ed aggiungendo un'intestazione: <TABLE border=1 bgcolor=”red”> <CAPTION>Abbreviazioni comuni</CAPTION> <THEAD> <TR> <TH>Abbreviato</TH> <TH>Forma lunga</TH> </TR> </THEAD> <TBODY> <TR> <TD>AUT</TD> <TD>Autore</TD> </TR> <TR> <TD>ARG</TD> <TD>Argomento</TD> </TR> <TR> <TD>TIT</TD> <TD>Titolo</TD> </TR> </TBODY> </TABLE> Le tabelle sono un argomento alquanto complesso e la loro formattazione dipende molto da elementi che non sono argomento di questo breve documento, si consiglia la lettura delle specifiche del HTML 4.0 edito OnLine da W3G all'indirizzo http://www.w3.org/TR/REC-html40/struct/global.html LINKS Il Links o Hyperlinks (collegamenti ipertestuali) servono per collegare del testo o immagini ad una risorsa pubblicata nel Web; questa risorsa può essere un'altra pagina, un altro sito, un riferimento ad un contatto email ecc. Il link è unidirezionale, cioè consente di andare da una pagina A ad una pagina B, ma non il viceversa (per ottenere l’equivalente di un link bidirezionale, bisogna creare due link, uno da A a B e uno da B ad A). Il link è solitamente associato ad un testo (che viene visualizzato in colore diverso e sottolineato) oppure ad altre componenti della pagina (ad esempio un’immagine). Vediamo alcuni esempi di link: <A href="../forest.gif">mappa della foresta</A> Si tratta di un link diretto ad un'immagine che verrà caricata a tutto schermo <A href="#sezione1">Introduzione</A> <A name="sezione1"> Introduzione </A> Come richiamare una sezione all'interno della stessa pagina <A href="www.esempio.com">visita il sito</A> <A href="www.esempio.com"><img src=”./immegine.gif”></A> esempio di come richiamare un altro sito cliccando su un'immagine o su del testo. Il TAG <A> supporta un parametro chiamato TARGET che indica dove la risorsa richiamata deve essere caricata (es. nuova pagina, stessa pagina, ecc). FRAMES Quando una pagina web viene caricata dallo User Agent, questa normalmente riempe lo schermo in quanto viene considerata come l'unico elemento da mostrare. Con l'utilizzo dei frames invece, in una singola schermata è possibile caricare più pagine HTML separate. Un semplice esempio di pagina multiframe è il seguente: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN"> <HTML> <HEAD> <TITLE>Esempio multiframe</TITLE> </HEAD> <FRAMESET cols="20%, 80%"> <FRAMESET rows="100, 200"> <FRAME src="pagina1.html"> <FRAME src="pagina2.gif"> </FRAMESET> <FRAME src="pagina3.html"> <NOFRAMES> Il Vs. browser non supporta i frames !! </NOFRAMES> </FRAMESET> </HTML> I frames vengono creati da sinistra verso destra come colonne e dall'alto verso il basso come righe. I frameset possono essere nidificati. Le dimensioni delle righe e delle colonne costituenti il frameset possono essere spedificate sia in percentuale che in pixel, vediamo alcuni esempi ripresi da W3C: In questo caso lo schermo viene suddiviso verticalmente in due parti uguali. <FRAMESET rows="50%, 50%"> ...the rest of the definition... </FRAMESET> Qui vengono create 3 colonne: La seconda colonna è esattamente 250 pixel mentre la prima prende il rimanente 25% dello spazio e la terza il 75% del rimanente. <FRAMESET cols="1*,250,3*"> ...the rest of the definition... </FRAMESET> Qui viene creata una griglia 2x3 <FRAMESET rows="30%,70%" cols="33%,34%,33%"> ...the rest of the definition... </FRAMESET> Qui invece supponiamo di avere lo schermo disponibile pari a 1000 pixel di altezza. Il primo riceve il 30% dell'altezza totale (300 pixels). La seconda è esattamente 400 pixels di altezza; questo lascia 300 pixel da dividere fra glia ltri due frame restanti. L'altezza del quarto frame è 2*, quindi è due volte più alta del primo frame (* o 1*), quindi il terzo è 100 pixel di altezza e il quarto 200. <FRAMESET rows="30%,400,*,2*"> ...the rest of the definition... </FRAMESET> FORMS Le FORM (dette anche form interattive) vengono utilizzate all'interno di un documento HTML per ricevere informazioni ed inviarle ad una entità esterna, quale una Servlet Java, uno script Server-Side, ecc. Per poter contenere i dati, le FORM si avvalgono di elementi chiamati controlli. La dichiarazione di una sezione FORM può essere la seguente: <FORM action='' method=”POST” enctype=”text/html” target='_self' ></FORM> In pratica in una form vengono almeno specificate l'azione, ovvero quale risorsa riceve i dati, la codifica dei dati il metodo di spedizione dei dati e il target. I controlli più comuni sono i seguenti: Bottoni (<input type="button" value="">) Radio Button (<input type="radio" name="" value="check me">) Check Box (<input name="" type="checkbox" value="">) Select (<select name=""><option><option></select>) File (<input type="file" value="">) Password(<input name="" type="password" value="">) Testo(<input name="" type="text" value="">) Hidden(<input name="" type="hidden" value="">) Testo multilinea(<textarea name="" rows= cols= ></textarea>) Submit(<input type="submit">) Reset(<input type="reset">) In genere i dati da spedire vengono manipolati tramite linguaggi di Scripting Client-Side di cui vediamo ora il più utilizzato e stadardizzato, JavaScript. SCRIPTS In questo breve documento tratteremo solo il linguaggio JavaScript, il primo luogo perchè è il più utilizzato dai programmatori WEB e poi perchè è definito come standard base per ogni produttore di User Agents. Uno script serve per poter aggirare le limitazioni di gestione interattiva dei dati presenti nell'HTML. Uno script JavaScript viene dichiarato nel seguente modo: <script language="Javascript" type="text/javascript"> <!-//--> </script> All'interno del blocco possono essere definite variabili, funzioni, classi ecc; la sintassi del javaScript è molto simile al C++, con le evidenti differenze per quello che riguarda la libreria delle funzioni e con le limitazioni introdotte nel linguaggio per l'accesso al FileSystem che devono essere ristrette per problemi relativi alla sicurezza del Client dove gira il programma. Uno script JavaScript viene attivato da un evento che può essere scatenato sia da una funzione automatica presente all'interno di TAG HTML, che dalla pressione di pulsanti, da funzioni scritte dal programmatore o dalla normale esecuzione della pagina. Il tipico esempio di JavaScript è la Message Box che viene attivata tramite la funzione alert(). Vediamo ora come scatenare un evento da un bottone HTML per la visualizzazione di una MessageBox JavaScript: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Test JavaScript</title> </head> <script language="Javascript" type="text/javascript"> <!-function chiama_avviso() { alert("Chiamata ricevuta"); } //--> </script> <body> <form action=""> <input type="button" value="Invia evento" OnClick="chiama_avviso();"> </form> </body> </html> L'evento viene generato alla pressione del tasto HTML seguendo la funzione OnClick; questa richiama a sua volta la funzione chiama_evento scritta all'interno del blocco JavaScript. Naturalmente la funzione che abbiamo scritto può ricevere dei parametri come nel seguente esempio: .. .. .. <script language="Javascript" type="text/javascript"> <!-function chiama_avviso(operatore) { alert("Chiamata " + operatore); } //--> </script> .. .. .. <input type="button" value="Invia evento" OnClick="chiama_avviso('ricevuta');"> .. .. .. L'utilizzo principale del JavaScript comunque va oltre la semplice visualizzazione di messaggi di avviso; viene invece utilizzato moltissimo per la validazione di dati e la navigazione condizionale. Prima però di illustrare esempi in questo senso, è necessario comprendere come il linguaggio “vede ed interpreta” una pagina HTML. Mentre fino ad ora ci siamo limitati a pensare ad una pagina HTMlL come ad una sequenza di istruzioni di formattazione di testi ed immagini lette in maniera non intelligente dallo User Agent, possiamo notare che il linguaggio JavaScript interagisce intimamente con la pagina. Infatti per questo linguaggio una pagina è un oggetto, costituito a sua volta da altri oggetti con un variabile numero di proprietà ed attributi. Il JavaScript e il Java sono simili in molti aspetti ma drasticamente diversi in altri. Il linguaggio JavaScript assomiglia sintatticamente al Java ma è molto meno rigoroso del suo quasi sinonimo Java, è possibile non dichiarare le variabili, i tipi di variabile possono essere interpretati dal parser, il casting può essere implicito, ecc. Tramite la funzione document.write(String) è possibile generare il contenuto HTML della pagina, questo interessante aspetto permette di letteralmente cambiare l'aspetto della pagina all'interno di layers. L'utilizzo comunque più conosciuto del JavaScript è quello che consente la validazione all'interno di TAG FORM. Con JavaScript è infatti possibile leggere il contenuto, ad esempio, di un campo di testo, confrontarlo con regole predefinite dal linguaggio o scritte dal programmatore, e validarne o modificarne il contenuto. Spiegare il seguente esempio e scrivere la struttura necessaria per il suo collaudo: <HEAD> <SCRIPT LANGUAGE="JavaScript"> function isaPosNum(s) { return (parseInt(s) > 0) } function qty_check(item, min, max) { var returnVal = false if (!isaPosNum(item.value)) alert("Digitare un numero positivo") else if (parseInt(item.value) < min) alert("Digitare un numero " + item.name + " maggiore di " + min) else if (parseInt(item.value) > max) alert(" Digitare un numero " + item.name + " minore di " + max) else returnVal = true return returnVal } function validateAndSubmit(theform) { if (qty_check(theform.quantity, 0, 999)) { alert("Ordine inviato") return true } else { alert("Impossibile inviare !") return false } } </SCRIPT> </HEAD> Tramite la funzione window.open() è possibile aprire una nuova finestra del browser. INSERIMENTO DI OGGETTI ESTERI In una pagina HTML possono essere inseriti degli oggetti che non vengono interpretati dal parser dello User Agent; ci si riferisce a questi elementi come a PlugIn. Vediamo alcuni esempi: Inserimento di un controllo ActiveX <object id="" classid="" width= height= data=""></object> Oggetto generico (ad esempio usato per inserire suoni o filmati) <embed src=""></embed> Oggetto Flash <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0" width="32" height="32"> <param name="src" value="flash-file.swf"> <embed src="flash-file.swf" pluginspage="http://www.macromedia.com/shockwave/download/" type="application/xshockwave-flash" width="32" height="32"> </embed> </object> SPECCHIETTO A Tabella dei colori base RGB Black = "#000000" Silver = "#C0C0C0" Gray = "#808080" White = "#FFFFFF" Maroon = "#800000" Red = "#FF0000" Purple = "#800080" Green = "#008000" Lime = "#00FF00" Olive = "#808000" Yellow = "#FFFF00" Navy = "#000080" Blue = "#0000FF" Teal = "#008080" Aqua = "#00FFFF” Fuchsia = "#FF00FF" SPECCHIETTO B Riassunto degli eventi JavaScript più comuni Evento Si applica a Accade se Handler dell'evento User aborts the loading of an image Abort onAbort images (for example by clicking a link or clicking the Stop button) User removes input focus from Blur onBlur windows and all form elements window or form element Change onChange text fields, textareas, select lists User changes value of element buttons, radio buttons, Click onClick checkboxes, submit buttons, User clicks form element or link reset buttons, links User drops an object onto the browser DragDrop windows window, such as dropping a file on the onDragDrop browser window The loading of a document or image onError Error images, windows causes an error User gives input focus to window or onFocus Focus windows and all form elements form element documents, images, links, text KeyDown onKeyDown User depresses a key areas documents, images, links, text KeyPress onKeyPress User presses or holds down a key areas documents, images, links, text KeyUp onKeyUp User releases a key areas Load document body User loads the page in the Navigator onLoad MouseDown documents, buttons, links onMouseDown User depresses a mouse button MouseMove nothing by default onMouseMove User moves the cursor User moves cursor out of a client-side onMouseOut MouseOut areas, links image map or link MouseOver links onMouseOver User moves cursor over a link MouseUp onMouseUp documents, buttons, links User releases a mouse button Move onMove windows User or script moves a window User resets a form (clicks a Reset Reset onReset forms button) Resize onResize windows User or script resizes a window Select text fields, textareas User selects form element's input field onSelect Submit onSubmit forms User submits a form Unload onUnload document body User exits the page