Tipi fondamentali di documenti web
Statici.
File associati al web server il cui contenuto non cambia. Tutte le richieste di
accesso conducano alla visualizzazione della stessa informazione.
Dinamici.
Non esistono in formato predefinito, ma sono generati dal web server ogni
volta che un browser ne fa richiesta.
La generazione consiste nella esecuzione di un programma da parte del
server. Il risultato cioè il documento è trasmesso dal server al browser.
I contenuti visualizzati possono variare da una richiesta all’altra.
Attivi
Sono applicazioni che il server invia al browser richiedente che vengono
eseguite dal browser. Il risultato rappresenta il documento attivo.
I contenuti visualizzati possono cambiare anche in funzione dell’interazioni
con l’utente
1
Pro e contro dei diversi tipi di documenti
Statici
Vantaggi: semplicità, affidabilità e rapidità di acquisizione e visualizzazione.
Possibilità per i browser di depositarne una copia nella cache.
Svantaggi: poca flessibilità, il loro aggiornamento deve essere fatto
manualmente.
Dinamici
Vantaggi: capacità di riportare informazioni aggiornate. Adatti a registrare
informazioni fluttuanti (quotazioni di borsa, previsioni
meteorologiche,disponibilità di biglietti per un concerto).
Responsabilità in carico ai server. Nessuna distinzione per i browser tra
documenti statici e dinamici che ricevono un documento HTML.
Svantaggi: maggiori costi e incapacità dei documenti di mostrare
l’informazione in divenire una volta che questa è visualizzata (quotazioni di
borsa).
2
Attivi
Vantaggi: Capacità di aggiornarsi continuamente: può accedere
direttamente alle informazioni e aggiornare continuamente i dati
visualizzati (documento attivo dedicato alle quotazioni di borsa).
Svantaggi:scrittura del codice in modo indipendente alla piattaforma.
Sicurezza
3
Realizzazione dei documenti dinamici
Modifiche al server web:
1) Deve eseguire un’applicazione che generi il documento in presenza di una
richiesta. Il server riceve l’output dell’applicazione e lo invia al browser.
2) È necessario predisporre una nuova applicazione per ciascun documento
dinamico.
3) Il server deve essere in grado di distinguere le stringhe URL che denotano
documenti statici da quelle dei documenti dinamici e in quest’ultimo caso
deve determinare l’applicazione da eseguire per la generazione del
documento.
4
CGI (Common Gateway Interface)
• Tecnologia ampiamente diffusa per la composizione dei documenti dinamici.
Sviluppata da NCSA (National Center Supercomputer Applications).
• Stabilisce le modalità di interazione tra server web e applicazioni dedicate alla
generazione di documenti dinamici (programmi CGI).
• Le applicazioni possono essere scritte in diversi linguaggi a seconda del tipo di
documento da generare (C,C++, Perl, shell di Unix..).
• I programmi CGI risiedono in una speciale directory (cgi/bin). La directory è
sotto il diretto controllo del webmaster, non essendo consentito all’utente di
creare programmi CGI
• Output di un programma CGI può essere un documento HTML, un’immagine.
Lo standard prevede l’uso di un’intestazione per distinguere tra i diversi tipi di
documenti.
5
• Lo standard prescrive che sia a carico del programma CGI la
predisposizione del documento prodotto a seconda della sua differente natura
in modo che il server possa correttamente inviarlo al browser.
Esempio:
content- type: text/html
<html><body>
<h1> Un elenco generato da un back-end CGI </h1>
1 2 3 4 5 6 7 8 9 10 </body></html>
E’compito del server inviare il documento HTML al browser utilizzando i
comandi del protocollo HTTP.
Il browser interpreta HTML e visualizza il contenuto del documento.
6
Due criticità:
1)I programmi back-end devono non solo includere il codice che implementa
la funzione richiesta, ma anche occuparsi di gestire l’interfaccia con il
browser.
2)Ad ogni richiesta per la funzione il server web deve attivare un nuovo
processo che viene chiuso quando termina l’esecuzione.
Più copie dello stesso processo possono essere quindi in esecuzione
contemporaneamente. Problemi di performance.
7
Passaggio dei parametri
Utilizzo del suffisso nella stringa URL inviata dal browser al server.
Il suffisso divide la stringa URL in prefisso (che rappresenta un programma
CGI) e un suffisso (che è passato al programma CGI come argomento).
Sintatticamente si utilizza il punto interrogativo “?” come separatore
Esempio:
http://www.unibo.it/dida/cgi-bin/orario/?giorno=010901&corso=C5
8
Server script
Programmi molto semplici inseriti in un documento HTML ed eseguiti sul server
quando il documento è richiesto dal client.
ASP (Active Server Pages). Soluzione proprietaria Microsoft (richiede
Microsoft Internet Information Server-IIS come web server)
Utilizza Visual Basic
<html><body>
<h1> Un elenco generato da un back-end ASP</h1>
<script language=“vbscript” runat= “server”>
For i=1 To 10
Response.Write i & “ “
Next
</script>
>/body></html>
9
Viene chiamato dal client tramite la URL:
http://www.unserver.it/unadir/elenco.asp
e produce sul browser il risultato:
html><body>
<h1> Un elenco generato da un back-end ASP</h1>
1 2 3 4 5 6 7 8 9 10
</body></html>
Si tratta di una pagina statica dal punto di vista del browser.
Il codice poteva essere eseguito anche lato client se il browser contenesse
un interprete visual basic
10
Il codice potrebbe essere eseguito anche lato client se il browser contenesse un
interprete visual basic:
html><body>
<h1> Un elenco generato dinamicamente client side in Visual-BasicScript </h1>
<script language=“vbscript”>
For i=1 To 10
Document.Write i & “ “
Next
</script>
>/body></html>
11
JavaScript (esecuzione lato client)
Linguaggio molto semplice (differente da Java) utilizzato per costruire
piccole applet.
Le applet non sono compilate (non viene generato byte code)
E’ un linguaggio interpretabile dai browser in formato sorgente
Può essere integrato con HTML: i documenti in HTML possono
contenere funzioni Javascript che realizzano semplici interazioni con gli
utenti.
Vantaggi: semplicità e facilità d’uso, integrazione con HTML, assenza di
compilazione.
Svantaggi: lentezza di esecuzione
12
<html><body>
<h1> Un elenco generato dinamicamente client side in JavaScript</h1>
<script language=“javascript”>
for( i=1 ; i<=10; i++1)
document.write (i+ “ “);
</script>
>/body></html>
13
Documenti attivi
Documenti dinamici: impossibilità di modificare le informazioni contenute
dopo la loro visualizzazione (es.,non possono contenere animazioni).
Soluzioni al problema
Server push. Il server deve eseguire il programma per la generazione del
documento a ciclo continuo inviando i risultati al browser.
Dal punto di vista dell’utente i contenuti della pagina continuano a cambiare
mentre la si esamina.
In presenza di molti client che tentano di accedere allo stesso documento, il
server rischia il sovraccarico.
Documenti attivi. Sono i browser ad eseguire l’elaborazione necessaria ad
aggiornare il documento.
Quando i server ricevono la richiesta di un documento attivo inviano al
browser un programma che viene eseguito localmente.
14
Browser e server trattano i documenti attivi al pari di quelli statici per ciò
che riguarda il loro trasferimento.
Il browser può conservarne una copia nella cache.
I documenti attivi non contengono tutto il software necessario alla loro
esecuzione, perché parte di quest’ultimo è detenuto staticamente dal
browser (interpreti, macchine virtuali,..).
I documenti attivi sono originariamente scritti in codice sorgente .Il
compilatore produce una forma eseguibile che viene inviata su richiesta al
browser.
L’esecuzione nel browser richiede la presenza di opportuno software per
collegare le librerie richieste.
Nel caso di programmi scritti in linguaggio Java, il compilatore traduce il
sorgente in un formato bytecode di Java. Il bytecode è formato
dall’interprete Java su l browser (JVM).
15
Applet
Programma in Java che genera documento attivo.
Es:
import java.applet,*;
import java.awt,*;
public class contaclick extends Applet {
int contatore ;
Textfield testo;
public void init( ) {
contatore=0;
;
add (new Button (“clicca qui”);
testo= new TextField (*il pulsante non è stato ancora premuto)”;
testo.setEditable(false);
add (testo);
}
16
public boolean action (Event e, Object arg) {
if ((Button e.target).getLabel() = = “Clicca qui”) {
contatore+=1
testo..set Text(*il pulsante è stato premuto”+ contatore+”volte.”);
}
return true;
}
}
17
Esecuzione delle Applet
a) Viene fornita la stringa URL di un’applet ad un browser compatibile con Java.
http://www.inesistente.edu/esempio/bbb.class
bbb.class rappresenta un file da acquisire ed eseguire sul browser
a) Viene inserita un’eticchetta applet (applet tag) all’interno di un documento
HTML
L’etichetta è composta da due parti dette rispettivamente codebase (base del
codice) e code (codice)
<applet codebase= www.inesistente.edu/esempio code= “bbb.class”>.
Quando il browser incontra l’etichetta applet, contatta il server, ottiene copia del
file bbb.class, costruisce un oggetto di classe bbb e chiama il suo metodo init
18
SERVLET
•La risposta Java a CGI. Sono programmi java che operano sul web-server con
il compito di:
•Gestire le richieste del client (HTTP)
•Eseguire le azioni necessarie per ottenere la risposta (esecuzione di una RMI,
accesso al data-base,.. )
•Preparare i risultati in un documento HTML
•Inviare la risposta tramite HTTP (formato testo-HTML,formato binario –GIF,
formato compresso)
19
Vantaggi delle servlet rispetto a CGI
• Con CGI ogni nuova richiesta da luogo ad un processo. Con servlets la
JVM genera un thread. Problemi di efficienza per il cambio di contesto.
• Con CGI se ci sono n richieste per lo stesso programma, il codice per il
programma viene caricato n volte. Con servlets ci sono n thread, ma una sola
copia della servlet class.
• Portabilità: servlet sono scritte in Java e quindi sono eseguibili su tutti i
web server dotati di JVM
20
JAVA SERVER PAGES(JSP)
• La tecnologia JSP consente di inserire in documenti HTML contenuti
generati dinamicamente dalle servlet.
• Concettualmente è simile a ASP con alcuni vantaggi.
La parte dinamica è scritta in Java e non VBScript e quindi è più potente per
applicazioni complesse che richiedono componebti riusabili.
Inoltre ha il vantaggio della portabilità.
•Esistono altri prodotti , PHP e ColdFusion entrambi basati su un linguaggio
proprietario
21