|
Das Konzept der URLs ist eines der wichtigsten im ganzen Web. Ein URL (Uniform Resource Locator) ist ein universelles Hilfsmittel zur Darstellung von Internet-Adressen. Hinter jedem Link, der sich auf einem HTML-Dokument verbirgt, steht ein URL, der beim Aufrufen des Links angesprungen wird.
Der Aufbau von URLs ist in seiner Vielfältigkeit recht komplex und ermöglicht es, sehr unterschiedliche Typen von Adressen zu verwalten. Ein URL-Link kann beispielsweise verwendet werden, um eine andere Web-Seite aufzurufen, eine Datei zu laden oder elektronische Post an einen anderen Anwender zu senden. Wir wollen hier nur auf die URLs eingehen, die man zur Darstellung von Web-Seiten-Adressen verwendet. Eine exakte Beschreibung des URL-Konzepts befindet sich in RFC 1630.
Ein Uniform Resource Locator besteht aus mehreren Teilen. Als erstes wird ein Dienst angegeben, der beschreibt, auf welche Art von Service die Adresse verweist. Typische Dienste sind html für Web-Seiten, ftp für einen File-Download oder mailto, um eine Mail zu versenden.
Bei einer HTML-Adresse besteht der URL aus drei weiteren Teilen:
Gültige URLs sind also http://java.sun.com/bugsandfeatures.html oder auch http://www.yahoo.com. Die meisten Browser und Server sind in der Lage, fehlende Bestandteile eines URLs weitgehend zu ergänzen. Fehlt beispielsweise die Dateierweiterung, wird .html angehängt. Bezeichnet der URL lediglich ein Verzeichnis, wird ein Standard-Dateiname wie beispielsweise index.html oder default.htm angehängt. |
![]() |
|
![]() |
Java implementiert das Konzept eines Uniform Resource Locators durch eine eigene Klasse URL, die sich im Paket java.net befindet. Diese dient dazu, die Syntax von URLs zu kapseln und die einzelnen Bestandteile voneinander zu trennen. Die Klasse URL besitzt vier Konstruktoren, die es ermöglichen, eine Adresse auf verschiedene Art zusammenzubauen. Wir werden hier nur die Variante verwenden, die einen String als Argument akzeptiert:
public URL(String url) throws MalformedURLException |
java.net.URL |
Bei der Anwendung dieses Konstruktors muß ein syntaktisch einwandfreier URL als String übergeben werden. Enthält der String einen Syntaxfehler, löst der Konstruktor eine Ausnahme des Typs MalformedURLException aus.
An dieser Stelle wird natürlich noch nicht überprüft, ob die angegebene Adresse wirklich existiert. Dazu wäre eine funktionsfähige Netzwerkverbindung nötig, und es würde ein in der Regel nicht akzeptabler Aufwand bei der Konstruktion von URL-Objekten entstehen. Die im Konstruktor durchgeführten Überprüfungen sind lediglich syntaktischer Natur, um sicherzustellen, daß ein URL ein gültiges Adressenformat hat. Nachdem ein gültiges URL-Objekt erzeugt wurde, kann es zur Adressenübergabe verwendet werden.
Weitere Hinweise zur Anwendung der Klasse URL finden sich in Abschnitt 32.4. |
![]() |
|
![]() |
Ein anderes Konzept, das bei der Programmierung von Links eine Rolle spielt, ist das des Applet-Kontexts. Hierunter versteht Java das Programm, das das aktuelle Applet ausführt. Dies ist in der Regel der Browser, der das Applet geladen hat; während der Entwicklung und Testphase des Programms kann es natürlich auch der Appletviewer sein.
Mit Hilfe der Methode getAppletContext kann ein Objekt des Typs AppletContext beschafft werden:
public AppletContext getAppletContext() |
java.applet.Applet |
In der Klasse AppletContext gibt es eine Reihe von Methoden, die dem Applet Funktionalitäten des Browsers zur Verfügung stellen:
Wir wollen auf die ersten beiden Methoden nicht weiter eingehen, sondern uns hier lediglich mit showDocument beschäftigen.
Die Methode showDocument kann dazu verwendet werden, eine andere Web-Seite zu laden. Dies führt dazu, daß das aktive Applet angehalten wird und die Kontrolle über die Web-Seite verliert. Befindet sich auf der neuen Web-Seite ein anderes Applet, so wird dieses geladen bzw. - falls es bereits geladen war - reaktiviert.
Die Methode showDocument steht in zwei unterschiedlichen Varianten zur Verfügung:
public void showDocument(URL url) public void showDocument(URL url, String name) |
java.applet.AppletContext |
In seiner einfachsten Form erwartet showDocument lediglich einen einzigen Parameter, nämlich den URL der Zielseite. Hier muß ein gültiges URL-Objekt angegeben werden, also eine komplette Adresse mit Dienst, Host-Name, Verzeichnis und Datei. Die Verwendung dieser Variante ist vor allem dann sinnvoll, wenn die Zieladresse ein absoluter URL ist.
Handelt es sich dagegen um einen relativen URL, also beispielsweise um eine andere Web-Seite aus demselben Verzeichnis, aus dem auch die aktuelle Seite stammt, ist es sinnvoller, die zweite Variante von showDocument zu verwenden. Zwar muß auch hier als erster Parameter ein URL-Objekt übergeben werden, doch mit den Methoden getCodeBase und getDocumentBase der Klasse Applet kann das Stammverzeichnis des Applets bzw. der HTML-Seite leicht gewonnen werden. Als zweiter Parameter braucht dann lediglich der Name der zu ladenden Datei relativ zu dem angegeben Verzeichnis übergeben zu werden. |
![]() |
|
![]() |
Das folgende Applet demonstriert die Anwendung von showDocument. Es erstellt eine Reihe von Buttons und zeigt sie auf dem Bildschirm an. Wird einer der Buttons gedrückt, verzweigt das Programm auf die durch den Button spezifizierte Seite. Während der Initialisierung sucht das Applet nach Parametern mit den Namen button1, button2 usw. Jeder dieser Parameter sollte den Namen des Buttons und die Zieladresse enthalten. Die beiden Teile müssen durch ein Komma getrennt sein. Eine Besonderheit besteht darin, daß auch Adressen angegeben werden können, die mit = anfangen. In diesem Fall wird das = entfernt und der interne URL nicht absolut, sondern unter Verwendung von getDocumentBase relativ zur aktuellen Web-Seite angelegt. Um die Buttons sowohl auf dem Bildschirm anzeigen zu können als auch den zugehörigen URL zu speichern, wurde eine neue Klasse URLButton definiert. URLButton erweitert die Klasse Button um die Fähigkeit, einen URL mitzuspeichern und bei Bedarf abzufragen.
|
![]() |
|
![]() |
Um die wichtigsten Fälle zu demonstrieren, wurde das Applet mit der folgenden HTML-Datei gestartet:
001 <html> 002 <head> 003 <title>URLLaden</title> 004 </head> 005 <body> 006 <h1>URLLaden</h1> 007 <applet code=URLLaden.class width=400 height=200> 008 <param 009 name="button1" 010 value="JAVA-Home,http://java.sun.com/"> 011 <param 012 name="button2" 013 value="Guido-Home,http://www.gkrueger.com"> 014 <param 015 name="button3" 016 value="Schranke,=Schranke.html"> 017 <param 018 name="button4" 019 value="Jana30,=images/jana30.gif"> 020 Hier steht das Applet URLLaden.class 021 </applet> 022 </body> 023 </html> |
URLLaden.html |
Hier werden vier verschiedene Buttons definiert:
|
![]() |
|
![]() |
Die Ausgabe des Programms im Internet Explorer sieht folgendermaßen aus:
Abbildung 25.4: Darstellung von URLLaden im Internet Explorer
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |