Il linguaggio HTML e le applet Java - Digilander

Il linguaggio HTML e le applet Java
Autore M. Di Ianni
1
Contenuti
Questa lezione espone alcuni concetti fondamentali per il progetto di pagine
per il web:
• viene introdotto il linguaggio HTML
• vengono mostrati semplici esempi di applet Java.
2
Il linguaggio HTML
L’ HTML (Hyper Text Markup Language) è un linguaggio per la
formattazione di testo progettato appositamente per l’utilizzo nel Web:
già sappiamo che un linguaggio per la formattazione di testo serve a
generare documenti di testo in formato opportuno (vedi Microsoft Word)
è di tipo markup perché i comandi (tag) per la formattazione sono inseriti in
modo esplicito nel testo (vedi Latex)
•
•
ESEMPIO: in HTML il testo
questo è <B>grassetto</B> e questo no
viene visualizzato come
questo è grassetto e questo no
•
è un linguaggio per la gestione di ipertesti in quanto consente la gestione di
hyperlink
• la compilazione di un documento HTML viene effettuata da un browser
3
I tag del linguaggio HTML
I tag del linguaggio HTML possono essere divisi in due categorie:
• tag per la formattazione di testo
• tag per altre finalità (inclusione di immagini, interazione con l’utente, ecc.)
In genere i tag hanno la forma
<direttiva> ... </direttiva>
e possono contenere parametri
<direttiva parametro1=“valore” ...> ... </direttiva>
4
Struttura di un documento HTML
Una pagina HTML ha questa struttura:
<HTML>
<HEAD>
...
<TITLE> ... </TITLE>
...
</HEAD>
<BODY>
...
</BODY>
</HTML>
5
Struttura di un documento HTML
Il ruolo dei tag che abbiamo incontrato nella pagina precedente è il seguente:
HTML : inizio e fine del documento
HEAD : questa parte non viene mostrata e contiene informazioni sul
documento (creatore, data di “scadenza”, eventuale titolo)
TITLE: il titolo del documento (appare come titolo della finestra che lo
contiene)
BODY : il testo contenuto fra <BODY> e </BODY> è ciò che viene
visualizzato sulla finestra
6
Tag per la formattazione
Alcuni dei tag esistenti per la formattazione del testo sono :
• <B> ... </B> : grassetto (bold)
• <I> ... </I> : corsivo (italic)
• <Hx> ... </Hx> : intestazione (heading) di livello x (da 1 a 6)
• <PRE> ... </PRE> : testo visualizzato esattamente come è scritto
(preformatted), con spazi multipli, caratteri di fine linea, ecc.
Esistono moltissimi altri tag per la formattazione, con i quali specificare
dimensione, colore, tipo dei caratteri, centratura del testo, liste di elementi,
tabelle di testo in forma grafica (il tag <TABLE>)
7
Tag per altre finalità
Questi sono i tag che forniscono al Web la sua grande versatilità. I tag più usati
di questo tipo sono:
•
i tag per la inclusione di immagini in-line (visualizzate direttamente all’interno
della pagina)
• i tag per la gestione degli hyperlink.
Il tag per la inclusione di immagini ha la seguente forma:
<IMG SRC=”url”> oppure <IMG SRC=”url” ALT=“testo”>
Questo tag fa apparire l’immagine di cui alla url seguita dal testo specificato nel
parametro <ALT> .
Altri parametri del tag <IMG> servono a: specificare le dimensioni
dell’immagine (WIDTH, HEIGHT), specificare l’allineamento dell’immagine
con il testo circostante (ALIGN), specificare le aree dell’immagine sensibili ai
click del mouse (ISMAP).
8
Tag per la gestione di hyperlink
Un hyperlink è un collegamento ipertestuale, cioè un collegamento ad un altro
documento HTML. In pratica, quando ci si posiziona sull’hyperlink e si preme
il pulsante sinistro del mouse, la pagina corrente (quella che contiene
l’hyperlink) viene sostituita con la paginga cui l’hyperlink fa riferimento.
Il tag per la gestione di hyperlink viene chiamato anchor (ancora) :
<A> ... </A>
La sua forma standard è:
<A HREF=“url”>testo visibile</A>
Nella pagina la stringa testo visibile appare sottolineata e, in genere, di
colore blu:
testo visibile
9
Un esempio di documento HTML ….
<HTML>
<HEAD>
<TITLE>Un documento di prova</TITLE >
</HEAD>
<BODY>
<H1 ALIGN="center">Titolo del documento </H1>
<H2 ALIGN ="left">Titolo del primo paragrafo </H2>
<P ALIGN="center"> Questo primo paragrafo contiene solo
testo normale, <B>grassetto</B> o <I>corsivo</I> ed un
<A HREF="http://www.diei.unipg.it">hyperlink</A></P>
<H2 ALIGN="left">Titolo del secondo paragrafo </H2>
<P ALIGN="center"> Questo secondo paragrafo contiene
solo un'immagine
<IMG SRC="c:windows\bosco.bmp"> </P>
</BODY>
</HTML>
10
…. Ed il suo risultato
Titolo del documento
Titolo del primo paragrafo
Questo primo paragrafo contiene solo testo normale, grassetto o
corsivo ed un hyperlink
Titolo del secondo paragrafo
Questo secondo paragrafo contiene solo un'immagine
11
HTML e Java
Java è un linguaggio di programmazione supportato dai più importanti
browser Web: questo significa che i principali browser Web “contengono”
gli strumenti necessari ad interpretare ed eseguire un programma Java.
Quindi, se un programma Java viene “inserito” in un documento HTML e
questo documento viene messo su Internet, chiunque abbia accesso ad
Internet (in qualsiasi parte del mondo) può eseguire quel programma Java.
Non tutti i programmi Java possono essere “inseriti” in un documento
HTML: in programmi Java per i quali questo è possibile sono detti applet.
Le applet vengono sempre eseguite sul computer dell’utente: pertanto la
loro esecuzione è sufficientemente veloce e non genera traffico aggiuntivo
dovuto allo scambio di dati con il server.
12
Applet e HTML
Una volta sviluppata, l’applet deve essere richiamata in una pagina HTML e
visualizzata mediante
• un browser (Internet Explorer, Netscape Navigator, ecc.)
• AppletViewer (letteralmente “visualizzatore di applet”), una applicazione
apposita fornita con il JDK
13
Il tag <APPLET>
Un’applet viene inserita in un documento HTML mediante il tag: <APPLET>.
Analizziamo ora alcuni attributi del tag <APPLET>:
• WIDTH
ed HEIGHT: questi attributi sono indispensabili e determinano
larghezza e altezza dell’applet all’interno della pagina Web espressi in numero
di pixel.
• ALIGN: specifica l’allineamento dell’applet . Alcuni suoi valori (LEFT e
RIGHT) fanno in modo che l’applet sia un blocco fisso attorno al quale scorra il
testo, altri valori fanno in modo che l’applet sia un elemento in linea, ossia
mobile all’interno di una riga di testo (BOTTOM= il bordo inferiore dell’applet
combacia con il bordo inferiore della riga corrente, TOP, MIDDLE, …)
• CODE: attributo indispensabile. Fornisce il nome del file compilato (.class)
dell’applet. Può essere una directory locale o un url della rete.
14
HTML+Applet
Una volta sviluppata, l’applet deve essere richiamata in una pagina HTML,
tramite il tag <APPLET>. Ad esempio, l’applet Prima viene richiamata come
segue:
<HTML>
<HEAD>
<TITLE>Un’applet di prova</ TITLE >
</ HEAD >
<BODY>
<H1 ALIGN="center">La nostra prima applet</H1>
<P ALIGN="center"> <APPLET CODE="Prima.class" WIDTH="400"
HEIGHT="150"</APPLET></P>
</ BODY >
</ HTML >
15
Applet e classi Java: il comportamento
Un applet è pensata per essere eseguita su un qualsiasi computer in qualsiasi luogo
del mondo. Questo pone problemi di sicurezza:
un’applet in grado di scrivere e modificare dati su disco potrebbe causare gravi
danni, voluti o meno dal programmatore dell’applet.
Come difendersi da applet mal progettate?
üUn’applet non può scrivere dati sul disco locale
üUn’applet non può eseguire programmi locali
üUn’applet non può attivare connessioni a elaboratori in rete diversi da quello
che sta facendo da server
üLe applet non possono trovare informazioni riguardanti il computer locale,
tranne la versione Java in uso
16
Un’applet facile facile
L’applet che segue…. è molto ben educata:
import java.awt.*;
import java.applet.Applet;
public class CiaoMondo extends Applet {
Label t;
public void init() {
t=new Label(“Ciao mondo!”);
add(t);
}
public void start() {
setBackground(Color.green);
setForeground(Color.yellow);
repaint();
}
}
17
I metodi init() e start()
Il metodo init() serve per le inizializzazioni occorrenti per l’applet e viene
chiamato automaticamente dal sistema quando Java lancia l’applet la prima
volta.
Il metodo start() viene chiamato automaticamente dopo il metodo init().
Viene chiamato anche ogni volta che l’utente torna alla pagina contenente
l’applet dopo aver visitato altre pagine. Quindi, può essere chiamato
ripetutamente, a differenza di init(). Per questo, è preferibile inserire in
init() anziché in start() il codice che deve essere eseguito una sola volta.
Il metodo start() è il punto in cui viene riavviata l’applet, ad esempio al
ritorno alla pagina che la contiene.
Se l’applet non contiene alcuna operazione che deve essere sospesa quando
l’utente esce dalla pagina Web corrente, non occorre implementare start().
18
Applet, contenitori e il metodo add
L’esecuzione di un’applet causa la creazione nella pagina web di un contenitore
in cui l’applet stessa inserirà tutti gli elementi di interazione con il mondo
esterno. Tali elementi, possono essere etichette, campi o aree di testo, pulsanti,…
Per potere inserire uno di tali elementi nel contenitore si utilizza il metodo add
della classe Applet.
public void init() {
t=new Label(“Ciao mondo!”);
add(t);
}
19
La classe Label
Label t;
public void init() {
t=new Label(“Ciao mondo!”);
add(t);
}
Label è una classe del package java.awt che rappresenta brevi scritte
(etichette, appunto).
Dopo aver dichiarato una variabile di tipo Label, il costruttore la inizializza
ad una stringa (il parametro) ed il metodo add la inserisce nel contenitore.
Il package awt (acronimo di Abstract Windowing Toolkit) contiene un insieme
di classi (l’unità di programmazione Java) che permettono lo sviluppo di
interfacce grafiche, utili per la gestione di finestre e loro componenti: menu,
aree di testo, pulsanti, caselle di selezione,…
20
Pagina HTML per l’applet facile facile
<HTML>
<HEAD>
<TITLE>Prova della prima applet</ TITLE >
</ HEAD >
<BODY>
<H1 ALIGN="center"><FONT color=#ae0000>Un'applet molto bene
educata</FONT></H1>
<APPLET CODE="CiaoMondo.class" WIDTH=400 HEIGHT=150
ALIGN="left"> </APPLET>
</ BODY >
</ HTML >
21
Interagiamo con un’applet
L’applet che abbiamo appena visto scriveva un messaggio in una finestra
senza richiedere alcuna interazione con l’utente. Per poter interagire con
un’applet (ad esempio, per comunicare dei dati) dobbiamo introdurre il
concetto di evento.
Un evento è un’azione che avviene su un certo oggetto
o l’accadere di un errore.
Esempi di eventi: fare clic su un pulsante, scegliere una voce tra le opzioni
di un menu, trascinare un oggetto con il mouse, …
In ogni caso l’evento viene comunicato a chi è incaricato di intraprendere le
decisioni (e le azioni) opportune (event listener).
22
Oggetti ed eventi
Distinguiamo eventi di azione ed eventi di scorrimento.
Le sorgenti di eventi di azione sono classi raccolte in massima parte nel package
java.awt. Le principali sono:
• campi ed aree di testo (TextField e TextArea)
• pulsanti (Button)
• menu ed elenchi (Choice e List)
• caselle di controllo (CheckBox)
L’ evento classico di scorrimento è relativo alla classe che implementa barre di
scorrimento (ScrollBar), visualizzate come barre con due pulsanti agli estremi
rappresentati con una freccia ciascuno. Nel seguito non tratteremo più eventi di
scorrimento.
23
La classe TextField
Textfield è una classe di java.awt analoga a Label e definisce le
caselle di testo, cioè aree di lunghezza fissa (determinata dai parametri al
momento della inizializzazione) in cui è possibile visualizzare stringhe. Fra i
metodi di Textfield troviamo:
•
void setEditable(boolean …): permette di definire il campo di
testo “modificabile”, cioè, consente all’utente di scrivere nella casella
• boolean
isEditable():verifica se la casella è modificabile.
24
La classe Button
È anche essa simile alla classe Label e definisce pulsanti.
Differentemente da Label ha la caratteristica di essere reattiva: è possibile
fare in modo che il programma esegua una determinata azione in risposta alla
pressione di un pulsante da parte dell’utente.
Per reagire alla pressione di un pulsante, in java.awt è definita
l’interfaccia actionListener che contiene il solo metodo
actionPerformed che deve essere implementato dalla classe Button.
25
Gestione di eventi di azione
Per gestire gli eventi di azione in java esiste la apposita classe
java.awt.Event.
Tutti gli eventi di
java.awt.Event:
azione
utilizzano
il
metodo
di
action()
public boolean action(Event e, Object o) {
//istruzioni di gestione dell’evento e
}
Il metodo andrà di volta in volta implementato per gestire l’evento di interesse.
Tra le diverse variabili della classe Event c’e’ target, che permette di
rilevare l’oggetto che ha generato l’evento
26
Giochiamo con un’applet
Nell’applet che segue, creiamo due pulsanti (pari e dispari) e una casella di
testo.
Il computer genera a caso un valore pari o dispari e, quando viene premuto
uno dei due pulsanti, viene stampato “hai vinto” oppure “hai perso” se il
valore del pulsante premuto coincide o meno con quello generato dal
computer.
Utilizziamo:
il metodo add() per inserire un oggetto (pulsante o casella di testo) nella
finestra
il metodo void setText(...) per assegnare un valore (stringa) ad una
casella di testo
•
•
27
Giochiamo con un’applet
import java.awt.*;
import java.applet.Applet;
import java.util;
public class PariODispari extends Applet {
Button P1, P2;
TextField testo;
public void init() {
P1=new Button(“pari”);
add(P1);
P2=new Button(“dispari”);
add(P2);
testo=new TextField(50);
add(testo);
}
...
28
Giochiamo con un’applet
// implementiamo opportunamente il metodo action()
public void action(Event evento, Object oggetto) {
int i,a;
String valore;
Random r=new Random();
a=Math.abs(r.nextInt())%2;
if (evento.target instanceof Button) {
valore=(String) oggetto;
if ((a==0)&&(valore.equals(“pari”)))
testo.setText(" Hai vinto!");
else if ((a==1)&&(valore.equals(“dispari”)))
testo.setText(" Hai vinto!");
else testo.setText(" Hai perso!");
return true;
}
return false;
}
}
29
Giochiamo con un’applet
Un possibile file HTML che contiene l’applet è il seguente:
<HTML>
<HEAD>
<TITLE>Pari o dispari</TITLE >
</HEAD >
<BODY>
<H1 align="center"><FONT color=#ae0000>Indovina il mio numero!
</FONT></H1>
<P ALIGN="center">
<APPLET CODE=“PariODispari.class" WIDTH="400" HEIGHT="150“
</APPLET ></P>
</BODY >
</HTML >
30