RETI DI CALCOLATORI
Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria
Università degli Studi di Udine
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.
Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.
Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore.
L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).
In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.
In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.
Nota di Copyright
Lezione 27
Le tecnologie alla base
del World Wide Web
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 4
Lezione 27: indice degli argomenti
• Il protocollo HTTP
• Il linguaggio HTML
• La realizzazione di servizi interattivi:
• Common Gateway Interface (CGI)
• cenni sui linguaggi Java e Javascript
• PHP
• informazioni di stato: i cookies
Il protocollo HTTP
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 6
HTTP
HyperText Transfer Protocol
• Risponde alla porta 80
• Protocollo ASCII
Comandi di HTTP
richiede la lettura di una pagina Web GET
richiede la lettura di un’intestazione di una pagina Web
HEAD
richiede di memorizzare una pagina Web PUT
aggiunge un contributo alla risorsa specificata POST
cancella una pagina Web DELETE
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 8
Esempio di funzionamento di HTTP
HTTP
• Applicazione: telnet
• può essere necessario abilitare l’eco locale dei caratteri
• NOTA: non funzionerà il tasto di backspace
• Nodo: allegro.diegm.uniud.it
• Porta 80
• Comando:
• GET /index.html
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 10
Il linguaggio HTML
Ipertesto
parola calda (hot word)
collegamento ipertestuale
(link)
àncora
(anchor)
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 12
Ipertesto distribuito
RETE
cli ck !
URL: Uniform Resource Locator
http://www.uniud.it/~montessoro/index.html#music protocollo
nome del server identificatore della risorsa locale (es. file)
àncora nome del file
percorso (path)
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 14
Esempi
Common Gateway Interface (CGI)
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 16
Common Gateway Interface (CGI)
FORM HTML
programma CGI
Web Server
dati inseriti
dall’utente
output del
programma
Dati inseriti dall’utente
• Vengono codificati nel formato:
• nomevariabile=valore&nomevariabile=...
• Inoltre:
• gli spazi bianchi vengono trasformati in ‘+’
• i caratteri non alfanumerici vengono trasformati in %XX dove XX è la
rappresentazione esadecimale del codice
ASCII
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 18
Esempi
Java e Javascript
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 20
Java
• Linguaggio orientato agli oggetti simile a C++
• L’architettura del software di sviluppo e di supporto al run-time è stata pensata per massimizzare la portabilità dei
programmi
Java
compilatore
bytecode sorgente Java
interprete del bytecode sistema operativo dell’host
hardware
Java
virtual
machine
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 22
Esempio: hello.java
hello.java
//A Very Simple Example class hello
{
public static void main(String[] args) {
System.out.println("Hello, world");
}
}
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 24
Java e Web
compilatore
applet bytecode sorgente Java
di un applet
pagina HTML
server
Web browser con interprete del bytecode
sistema operativo
dell’host con software di rete hardware
client
Esempi: applet.html, TicTacToe.html
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 26
Applet Java
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class applet extends Applet{
String text = "I'm a simple applet. Hello!";
public void init() {
text = "I'm a simple applet";
setBackground(Color.cyan);
}
public void start() {
System.out.println("starting...");
}
public void stop() {
System.out.println("stopping...");
}
public void destroy() {
System.out.println("preparing to unload...");
}
public void paint(Graphics g){
System.out.println("Paint");
g.setColor(Color.blue);
g.drawRect(0, 0,
getSize().width -1, getSize().height -1);
g.setColor(Color.red);
g.drawString(text, 15, 25);
} }
Applet Java: HTML
<HTML>
<BODY>
<APPLET CODE=applet.class WIDTH=200 HEIGHT=100>
</APPLET>
</BODY>
</HTML>
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 28
Javascript
• Linguaggio interpretato a livello sorgente (no bytecode)
• Le funzioni Javascript sono incluse nel
file HTML
PHP (PHP Hypertext Preprocessor)
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 30
pagina HTML
file HTML (x.html)
Web Server
PHP (PHP Hypertext Preprocessor)
URL: .../x.html
HTML
file PHP (x.php)
Web Server
PHP (PHP Hypertext Preprocessor)
URL: .../x.php
PHP
preprocessor HTML
+ PHP
PHP output HTML
dinamico
pagina HTML
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 32
Esempio: HELLO.PHP
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo "Hello World<p>"; ?>
</body>
</html>
form HTML
file PHP (x.php)
Web Server
PHP e form HTML
...
<FORM action="x.php"
METHOD="POST">
...
PHP
preprocessor script
PHP + dati utente PHP
output HTML
dinamico
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 34
Dati inseriti dall’utente
• Sono direttamente accessibili mediante le funzioni di libreria PHP
• Non è necessario decodificare la stringa
generata dal browser
Informazioni di stato
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 36
Cookies
Web browser
programma CGI
Web
Server
Cookies
Web browser
programma CGI
Web
Server
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 38
Cookies
Web browser
Web
Server
Cookies
Web browser
programma CGI
Web
Server
© 2001-2007 Pier Luca Montessoro (si veda la nota a pagina 2) 40