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.
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:
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.
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.
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:
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.
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.