Guida sulle Applet

R4z0r_Cr4sH

Utente Electrum
10 Giugno 2007
501
11
6
148
una pagina HTML e quindi scaricata dal pc client per poi essere eseguita dal browser web) non può ad esempio leggere o scrivere dei file sul pc in cui essa viene eseguita proprio per il fatto che essa viene prelevata da internet e quindi potrebbe contenere del codice maligno.Le operazioni che un'applet non può compiere sono:
  • Leggere e scrivere file in locale
  • Aprire una connessione con un server diverso da quello che la ospita
  • Lanciare l'esecuzione di altri programmi sulla macchina locale
  • Invocare il metodo System.exit()
  • Accedere alle proprietà del sistema

Queste regole però non vengono rispettate se l'applet è in locale,perchè si presume che l'utente conosca il programma e che confermi il codice sicuro.Queste regole non vengono anche ristettate dal noto appletviewer(un browser implementato nel JDK).

Diversamente dalle applicazioni,un'applet non ha bisogno del classico codice "extends Frame" o "extends JFrame" nella dichiarazione della classe,perchè un'applet è una componente grafica già dalla nascita e quindi eredita automaticamente un frame.Essa può contenere qualunque componente grafico proprio come i comuni programmi.
La struttura generale di un'applet è:
Codice:
import java.applet.*;
public class <nome applet> extends Applet{
    //attributi
    //metodi
}
utilizzando la comune classe applet.
Codice:
import javax.swing.JApplet;
public class <nome applet> extends JApplet{
    //attributi
    //metodi
}
utilizzando la classe JApplet contenuta in swing.

Nelle applet non è più presente il classico metodo main,il metodo che lo sostituisce è init,in questo metodo solitamente viene inserito tutto ciò che deve essere inizializzato alla partenza dell'applet come il posizionamento dei componenti grafici o il caricamento di immagini.Esse non hanno bisogno di un loro ascoltatore sulla finestra (il classico WindowListener per le comuni applicazioni) perchè è il broswer che si occupa di definirlo.In una classe applet oltre al metodo init contiene altri metodi per la sua corretta esecuzione:i metodi start,stop e destroy.L'esecuzione di questi metodi viene gestita direttamente dal broswer ed hanno una funzione importantissima.Il metodo start viene richiamato subito dopo init,ogni volta che ci si sposta su un'altra pagina (quindi si rende la pagina del browser inattiva) viene richiamato il metodo stop,se si ritorna sulla pagina che contiene l'applet (si rende la pagin del browser attiva) viene richiamato il metodo start e così via,il metodo destroy viene richiamato quando si chiude il browser e ha la funzione di distruggere l'applet.Solo i metodi init e destroy vengono richiamati solo una volta,gli altri posso essere richiamati quante volte si vuole,però se i metodi non vengono utilizzati è possibile non inserirli nell'applet.Lo scopo di questi metodi è quello di non tenere occupato il processore inutilmente.Includendo questi metodi nell'applet otterremo:
Codice:
import javax.swing.JApplet;
public class <nome applet> extends JApplet{
        //attributi
    public void init(){

	}
	public void start(){

	}
	public void stop(){

	}
	public void destroy(){

	}
}
Compilando l'appet otterremo un file del tipo NomeApplet.class,non possiamo avviarla però come un comune programma perchè priva del metodo main e quindi si predisporrà un file HTML che accoglierà la nostra applet.Il tag da utilizzare è <APPLET> e la sua forma base è:
Codice:
<APPLET CODE=nomeapplet WIDTH=xxx HEIGHT=xxx></APPLET>
Gli elementi WIDTH e HEIGHT specificano al browser,in pixel,le dimensioni da riservare per l'applet,di conseguenza l'applet sarà costretta a rispettare quelle dimesioni.Il file HTML sarà tipo:
Codice:
<html>
    <head>
        <title>Applet</title>
    </head>
    <body>
    <center>
        <applet code="NomeApplet.class" width=500 height=500>
        </applet>
       Applet Non eseguibile.
    </center>
    </body>
</html>
In questo caso l'applet avrà una dimensione di 500x500 e viene centrata nella pagina,se l'applet non è esegubile verrà visualizzato "Applet Non eseguibile".Altri elementi opzionali che possono essere aggiunti sono:
  • CODEBASE:specifica l'URL dove è posizionata l'applet,se non è indicato viene usato l'URL della pagina HTML che contiene l'applet
  • ALT:contiene il messaggio da visualizzare quando il nonostate il browser riconosca il tag <APPLET> non riesca comunque a eseguire l'applet.
  • NAME: permette di associare un nome all'applet
  • ALIGN: indica dove deve essere allineata l'applet;i possibili valori sonoo:lleft,right,top,texttop,middle,absmiddle,baseline,bottom,absbottom
Si potrebbe riassumere tutto con:
Codice:
<applet codebase=http://www.sitoDoveRisiedeL'appet.it/EsempioApplet/ code=NomeApplet.class width=500 height=500 alt="questa è un'applet" align=right name=MiaApplet></applet>
Inoltre si si possono passare dei parametri ad un'applet utilizzando determinati tag HTML in modo da permettere all'applet di utilizzare nel programma questi parametri.Il tag da utilizzare è:
Codice:
<param name=nomeDelParametro value="valoreDelParametro" >
mentre il per prelevare il parametro immesso nel codice HTML dalla nostra applet scriveremo:
Codice:
String p=getParameter("NomeDelParametroHTML");
in questo modo nella stringa p verrà inserito il parametro passatogli via HTML.Cosa da tenere in considerazione è che il passaggio di parametri è solo in stringa,se si vuole passare un parametro numero quindi ci toccherà convertire il parametro passato con il seguente codice:
Codice:
int n=Integer.parseInt(getParameter("NomeDelParametroHTML"));
se invece lo si vuole convertire in un double utilizzeremo:
Codice:
double n=Double.parseDouble(getParameter("NomeDelParametroHTML"));
e così via per poter convertire il parametro nel tipo che noi desideriamo.Esempio di un'applet che utilizza il passaggio di parametri:
Codice del .class:
Codice:
import javax.swing.JApplet;

public class Parametri extends JApplet{
    private String colore;
    private int grandezza;
    
    public void init(){
        colore=getParameter("colore");
        if(colore==null){
            colore="bianco";   
        }
        try{
            grandezza=Integer.parseInt(getParameter("grandezza"));
        }catch(Exception e){
            grandezza=1;
        }
    }
    public void start(){

    }
    public void stop(){

    }
    public void destroy(){

    }
}
e di seguito il codice HTML per utilizzare l'esempio descritto sopra:
Codice:
<html>
    <head>
        <title>Applet</title>
    </head>
    <body>
    <center>
        <applet code="Parametri.class" width=500 height=500>
        </applet>
       Applet Non eseguibile.
    <PARAM NAME = grandezza   VALUE = 50>
	<PARAM NAME = colore   VALUE = blu>
    </center>
    </body>
</html>
 
hai detto che lo facevi e l'hai fatto :asd: bravo ora mi puoi dare una mano perchè ancora le devo controllare il sorgente ke mi ha passato il prof oggi