Applets im Internet


Applets laufen normalerweise in einem Server-Client-Umfeld. Der Name einer Applet-Datei und die Namen aller irgendwie am Applet beteiligten Dateien reichen daher nicht aus, um den Ort von Dateien im Netz zu bestimmen, sondern man braucht zusätzlich Protokoll, Server-Name etc, anders gesagt: man braucht eine URL. Zu diesem Zweck verfügt die Applet-Klasse über einige Methoden.

Codebase und DocumentBase

Für Applets bestehen aus Gründen der Sicherheit Einschränkungen, was den Zugriff auf Dateien und Resourcen betrifft. Ein Applet darf nur solche Dateien öffnen, für die es über eine richtige URL verfügt, also nicht auf dem Rechner, in dessen Browser es läuft. Und das Applet darf Dateien auf dem Server öffnen, von wo es selbst herkommt. Diese Herkunft eines Applets bezeichnet man als seine CodeBase bzw. DocumentBase.

Die codeBase ist eine Eigenschaft des Applets und besteht aus:

Die documentBase ist ebenfalls eine Eigenschaft des Applets und besteht zusätzlich aus:

Das gelbe Applet ermittelt documentBase und codeBase dieser HTML-Seite und zeigt sie hiermit an:

Beachte: das Applet selbst läuft nicht in der codeBase, da es in einem package untergebracht ist, siehe den folgenden Applet-Quelltext:

package urlPackage;

import java.applet.Applet;
import java.net.*;
import java.awt.*;

public class CodeDocDemo extends Applet{

public void init()
{
    setLayout(new GridLayout(2,2));
    setBackground(Color.yellow);
    add( (new  Label( "documentBase: "+getDocumentBase().toString())));
    add( (new  Label( "codeBase:    "+getCodeBase().toString())));
}
}

Übung:

Man teste das CodeDocDemo in unterschiedlichen Verzeichnissen und auf einem Server.

AppletContext

Der Kontext eines Applet besteht aus einem Browser mit einem HTML-Dokument, auf dem das Applet sich befindet. Das folgende Applet wertet den AppletContext aus und zeigt ihn an:

package urlPackage;

import java.applet.Applet;
import java.net.*;
import java.awt.*;

public class AppletContext extends Applet{

    public void init()
    {
        setBackground(Color.yellow);

        String S1 = "getAppletContext().toString()    " + getAppletContext().toString();
        Label L1 = new Label( S1 );
        add( L1 );
    }
}

Übung:

Man teste das Context-Applet in unterschiedlichen Browsern.

URL

Der unique resource locator sagt, wo eine Datei auf einem bestimmten Server zu finden ist. Die URL wird benötigt, um Dateien auf einem Server zu öffnen.

Die URL besteht aus:

Das gelbe Applet ermittelt einige Eigenschaften der URL dieser HTML-Seite

Applet-Quelltext:

package urlPackage;

import java.applet.Applet;
import java.net.*;
import java.awt.*;

public class URLDemo extends Applet{

public void init()
{
    setLayout(new GridLayout(6,2));
    setBackground(Color.yellow);
    try{
        URL url = new URL( getDocumentBase().toString());

        add( (new  Label("url.toString()")));
        add( (new  Label(url.toString())));

        add((new Label("Diese URL hat folgende Eigenschaften und ")));
        add((new Label("Werte:")));

        add( (new  Label("url.getHost().toString()")));
        add( (new  Label(url.getHost().toString())));

        add( (new  Label("url.getProtocol().toString()")));
        add( (new  Label(url.getProtocol().toString())));

        add( (new  Label("url.getFile().toString()")));
        add( (new  Label(url.getFile().toString())));

        add( (new  Label("(url.getPort())+")")));
        add( (new  Label((url.getPort())+"")));
    }catch( MalformedURLException e ){}
}
}

Übung:

Man teste das URLDemo in unterschiedlichen Verzeichnissen und auf einem Server.

Beispiel: Applet ruft HTML-Seite

Im folgenden Beispiel wird die URL einer Datei ermittelt, die sich in der DocumentBase befindet, und die so ermittelte Datei wird im AppletContext angezeigt.

Dieses gelbe Applet hat einen Button und ruft eine HTML-Seite:

Übung:

Man lese im Handbuch das Kapitel über die Klasse URL Das obige Applet soll verbessert werden: Der Name der anzurufenden URL soll aus der HTML-Seite als Parameter übergeben werden. Der Name soll im Applet irgendwie angezeigt werden.


www.AndreasGoedel.de