ࡱ > K M J M g( bjbj== .\ W W g$ l $ k | $ ~ % V & @ t>| f ; 0 k r x " Lezione 10 Applet e Javascript
Un'applet un particolare tipo di programma Java il cui output pensato per essere incluso in pagine Web. Quando un utente visualizza una pagina Web che contiene un'applet, l'applet viene eseguita localmente (cio sulla macchina dell'utente) e non remotamente (cio sul server come le servlet). L'applet, come tutte le applicazioni Java, gira su una Virtual Machine su un processo separato da quello del browser.Dato che il codice dell'applet viene fornito dal server ma gira sulla macchina del client l'applet stessa soggetta a delle limitazioni per renderne sicura l'esecuzione stessa.Le principali limitazioni imposte alle applet sono:
Non si pu leggere dal disco locale;
Non si pu scrivere nel disco locale;
Non si possono aprire connessioni con server diversi dal server da cui proviene l'applet;
Non si possono invocare programmi locali;
Non si possono scoprire informazioni privare riguardo all'utente.
HTML
Il browser dev'essere istruito su come visualizzare l'applet stessa. Questo lo otteniamo attraverso il tag HTML "APPLET" che associa il file .class alla pagina Web. L'attributo CODE indica con un URL relativo il file .class da caricare. I parametri WIDTH e HEIGHT indicano rispettivamente la larghezza e l'altezza dello spazio da riservare all'applet nella pagina Web.Ecco un esempio di codice HTML per la visualizzazione di un'applet:
AppletReload
Codice Java (facoltativo)
import java.applet.Applet;import java.awt.Graphics;public class Ciao extends Applet { public void paint(Graphics g) { g.drawString("Ciao", 50, 25); }}La classe Applet sottoclasse di Panel, nella libreria Awt. Questo implica in particolare che:Applet ha come layout manager di default il Flow Layout Manager, che dispone gli elementi grafici da sinistra a destra, con allineamento centraleApplet eredita le variabili ed i metodi delle sue superclassi Component, Container e Panel.Con un applet possibile visualizzare all'interno della finestra della pagina Html tutto quello che possibile fare con una normale applicazione Java senza le limitazione dell'html (vedi sotto esempio dell'applet con testo scorrevole).
ciclo vita di una Applet (facoltativo)
Anche l'applet analogamente alla servlet ha un ciclo di vita una serie di metodi che vengono invocati automaticamente dalla Virtual Machine dove gira l'applet. I metodi invocati sono:
init(): quando si apre un documento con un applet, viene invocato automaticamente il metodo init() per linizializzazione dellapplet. Pu essere usato per inizializzare le variabili. Questo metodo chiamato solo una volta per applet;
start(): quando un documento con un applet viene aperto, viene chiamato il metodo start() automaticamente dopo init(), per iniziare lapplet. Questo metodo, ad esempio, invocato ogni qual volta lapplet viene rivisitato.
stop(): viene invocato automaticamente quando lutente si sposta fuori dalla pagina su cui situato lapplet . Serve per bloccare attivit che possono rallentare il sistema quando lutente non sta utilizzandole (es. animazioni) . I metodi start e stop formano una coppia: start attiva un comportamento, stop lo disattiva.
destroy() : Viene invocato quando l'applet viene dismesso (ad es. quando viene chiuso il browser), e in questo caso viene prima invocato il metodo stop().Tutte le risorse legate allapplet vengono rilasciate.
paint() : Questo metodo invocato direttamente dal browser dopo che init() stato completamente eseguito e dopo che start() abbia iniziato lesecuzione. E invocato ogni qual volta lapplet deve essere ridipinto
repaint() : invoca il metodo update() al pi presto (non da overridden) update() permette di ri-dipingere lapplet, e pu essere riscritto. Per default, pulisce lo sfondo e chiama il metodo paint().
Esmepio Testo scorrevole (facoltativo)
Un esempio tipico di funzionalit ottenibili con le applet il testo scorrevole:public class Scroll extends Applet implements Runnable{ Thread t=null; String temp; String text = "Questo testo scorre"; long velocitaBattitura=100; boolean cont = true; public void start() { t = new Thread(this); cont = true; t.start(); } public void stop() { cont = false; t.interrupt(); t=null; } public void run() { while (cont) { for(int j=0; j<=text.length(); j++) { temp = text.substring(j)+ " " + text.substring(0,j); repaint(); try{t.sleep(velocitaBattitura);} catch(InterruptedException eint){} } } } public void paint(Graphics g) { Font f = new Font("Arial",0,16); FontMetrics fm = g.getFontMetrics(f); int w = fm.stringWidth(text); g.setColor(Color.white); g.fillRect(0,0,w+10,30); g.setColor(Color.black); g.setFont(f); g.drawString(temp, 5, 20); }}
Sintassi del tag APPLET (facoltativo)
L'uso dei parametri permette in modo molto semplice di personalizzare il comportamente dell'applet. Esempio:public void init(){ String param = getParameter("testo"); ...}Nel file HTML possiamo usare l'applet con due parametri diversi:Etichetta
Javascript
Javascript un linguaggio di scripting con sintassi simile a Java, da cui deriva il nome, che gira nel processo del browser (e quindi non in una Virtual Machine esterna come le Applet). Gli oggetti predefinit su cui opera Javascript sono le "parti" del browser, e i metodi sono le funzionalit del browser. Quindi sono automaticamente definiti gli oggetti window (finestre del browser), document (il documento visualizzato), history (la "storia" dei siti gi visitati dal browser), etc. Gli usi possibili di Javascritp sono innumenrevoli tra i quali validazione dell'input e animazione delle pagine html sono i principali.
Javascript e validazione dell'input
Per verificare la validita' dell'input nel form viene spesso usato javascript. In particolare esaminiamo il seguente codice:
ESERCITAZIONE
Problemi Javascript
Anche se Javascript pu essere la soluzione di molti problemi bene non abusarne perch:
il browser potrebbe averlo disattivato;
versioni diverse di browser si comportano in maniera leggermente diversa in visualizzazione, ma leggere differenze di funzionamento possono portare malfunzionamenti del codice;
$ I
c
d
}
~
q w T [ q w ' 0 > D o v M N O P ` a o p & ' * + ? @ C D U V h i t u y z CJ aJ 0J 5B*\ph 5\] K u r .
/
I
4
[
'
&