17.27 Ein Servlet generiert WAP-Seiten für das Handy
Zum Schluss wollen wir noch ein kleines Beispiel für WAP-Handys ansehen. WAP (Wireless Application Protocol) ist ein Protokoll (aktuell ist Version 1.21), das drahtlosen Empfangsgeräten das Empfangen von Internet-Inhalten wie Text und Bilder ermöglicht.
Ein Handy kommuniziert mit dem WAP-Server über WAP wie ein Web-Browser mit einem Server HTTP spricht. Da ein Handy ein Mini-Browser ist (auch Micro-Browser genannt), versteht es ebenso wie ein Web-Browser eine Seitenbeschreibungssprache, die mit HTML verwandt ist. Sie heißt WML (die Version 1.3 ist in Vorbereitung), die Abkürzung steht für Wireless Markup Language. Die über Handy angebotenen Inhalte sollten sich jedoch kurz halten; die meisten Handys besitzen nur vier Zeilen mit Schwarzweiß-Grafiken. Der Klassiker auf dem WAP-Markt, das Nokia 7110, bringt es auf 96 x 65 Pixel. Daher sind WML-Seiten nicht vergleichbar mit chic aufgemachten Web-Seiten. Die Benutzer würden sich bei einem hohen Seitenpreis besonders über aufwändige Seiten freuen. Zumal die Geschwindigkeit gerade mal einem alten 9600-Baud-Modem gleicht. In den nächsten Jahren sollen aber - laut Prognosen - Displays mit mehreren Textzeilen und 256 Farben vorhanden sein. Neben der Übertragungstechnik GSM, auf deren Basis heute die Informationen übertragen werden, gibt es viel versprechende Änderungen, darunter Symbian, Bluetooth, SIM-Toolkits und UMTS (Universal Mobile Telecommunications System). UMTS mit einer Übertragungsrate von bis zu zwei MB/s (mindestens 384 KB/s) hat dabei die besten Chancen, das GSM abzulösen, da das Protokoll zu GSM abwärtskompatibel ist. Vodafone möchte 50 % der Bevölkerung Ende 2005 erreicht haben.
In unserer Kurzeinführung interessieren wir uns aber weniger für die harten WAP-Fakten und die wirtschaftliche und soziale Bedeutung (wo ist die nächste Pommes-Bude in Paderborn, die keine pappigen Pommes macht?), als vielmehr für den Anteil, der nötig ist, damit ein Servlet eine WML-Datei erstellen kann. Sehr gute Einführungen finden sich wie immer im Internet, eine wichtige Seite dabei ist das WAP-Forum http://www.wapforum.org/.
17.27.1 Ein WAP-Handy simulieren
Da ich meinen Lesern nicht zumuten kann, nur zum Testen der WML-Seiten ein WAP-fähiges Handy zu kaufen, verlassen wir uns auf eine Softwareemulation. Die unterschiedlichen Handy-Hersteller bieten Toolkits zur Softwareentwicklung an. Ein ausgereiftes Toolkit mit dem Namen Mobile Internet Toolkit (früher Wap Toolkit) kommt von Nokia. Die Firma stellt wie viele andere Handy-Hersteller einen WML-Browser, einen Skript-Interpreter sowie Laufzeitbibliotheken zur Verfügung. Für die Entwicklung der Seiten steht ein einfacher WML- und WMLScript-Editor zur Verfügung. Wir können das Toolkit unter http://www.forum.nokia.com/main/1,35452,030,00.html beziehen und ohne Umwege installieren. Das Toolkit selbst ist in Java programmiert, doch leider 16 MB groß.
Eine WML-Seite schreiben und betrachten
Nach der Installation können wir beim Nokia-Toolkit Beispiele laden und auf dem Handy das Resultat sehen. Beispielprogramme werden unter File/Open geladen und durch Aktivieren der Schaltfläche Show angezeigt. Entscheiden wir uns für eine eigene kleine WML-Datei, so kann diese etwa so aussehen:
Listing 17.26 Saft.wml
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
">http:///www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="card">
<p>
Moege der Saft mit dir sein.
</p>
</card>
</wml>
Haben wir die Datei unter einem Namen wie c:\saft.wml gespeichert, dann müssen wir eine URL zusammensetzen, die wie folgt aussieht:
file:/c:/saft.wml
Dann lädt der Browser die Datei und stellt sie mit seinen Mitteln dar.
Zwei Handys bei Nokia
Das Toolkit von Nokia stellt ein zweites Handy bereit, welches wir nun einstellen wollen. Wir wählen dazu unter dem Menüpunkt Toolkit/Select Device den Eintrag Blueprint Phone und damit ein spaceiges WAP-1.2-Handy. Dies ist notwendig, da eine spezielle Einstellung, die wir etwas später benötigen werden, mit dem anderen Handy nicht möglich ist.
17.27.2 Übersicht der wichtigsten Tags
Der strikte Tag-Gebrauch ist eine der herausragendsten Eigenschaften von WML. Alle Tags müssen zum Beispiel kleingeschrieben sein. Uns erinnert dabei vieles an HTML, etwa die Kommentare, die in <!-- eingeschlossen --> sind, genauso die Tag-Kombination <b>mit dem Anschließenden</b>, welche Text fett anzeigt. Diese Darstellung unterstützen jedoch nicht alle Handys. Das Gleiche gilt für <i>italic</i>, <em>weitere Auszeichnung eines Textabschnittes</em>, <big>besonders großem Text</big>, <small>besonders klein darzustellenden Text</small>, <strong>fettes Schriftbild</strong> und <u>unterstrichen</u>.
Konzentrieren wir uns auf die Tags, die besonders bei WML hervorzuheben sind:
|
<?xml version="1.0"?>
Diese erste Zeile sagt aus, dass es sich bei allen WML-Dateien um XML-Code handelt. Damit kann jeder Code auch mit einem XML-Programm interpretiert und bearbeitet werden. |
|
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
Diese zwingende Zeile muss am Anfang einer WML-Datei stehen. Sie definiert den Ort, an dem die Tags in WML definiert sind. Eine DTD definiert, wie die Tags heißen und welche Attribute erlaubt sind. Unser Handy benutzt dazu die DTD für WML-Dateien in der Version 1.1. Vor dem <!DOCTYPE ...> sollte kein einziges Whitespace stehen. |
|
<wml>
Dieses Tag steht zu Beginn eines Quellcodes und ist <html> bei Web-Seiten vergleichbar. Es wird durch </wml> abgeschlossen. |
|
<card id="Cardname">
Jede WML-Datei besteht aus einem Deck, das in Cards unterteilt ist. Nur ein Deck kann in einer WML-Datei definiert werden. Das Card-Tag definiert eine im Deck eingesetzte Karte mit einem eindeutigen Namen. Dieser sollte nicht mehr als acht Zeichen umfassen. Das Tag </ card> beendet den Inhalt einer Card. Nach der Deklaration folgt eine weitere Card, oder das Deck ist zu Ende - dann folgt </wml>. |
|
<title="Überschrift">
Bestimmt den Titel beziehungsweise die Überschrift. Kann auch zusammen in den Card-Tag geschrieben werden. <card id="Cardname" title="Überschrift">. |
|
<p>
Definiert einen Absatz. Am Ende muss ein </p> den Absatz beenden. Eine Erweiterung ist <p align="Ausrichtung">, der den Text nach left, right oder center ausrichtet. |
|
<br/>
Bringt einen Zeilenvorschub ein. Der Slash am Ende fällt besonders auf. Dies bedeutet, dass es kein <br>-Tag gibt und dass das Tag <br/> somit beginnender und endender Tag zugleich ist. |
|
<img src="Bildname.wbmp" alt="Bildname"/>
Bindet eine Grafik im WBMP-Format ein. Dies ist das einzige Bildformat, welches zur Zeit definiert ist. Der Parameter alt muss mit einem Wert belegt werden (auch wenn es nur ein Leerzeichen ist). |
|
<a href="URL ">Link</a>
Zeigt auf eine externe Web-Seite. |
|
<a href="#Cardname">Link</a>
Eine Besonderheit des Links. Das Hash symbolisiert den Verweis innerhalb des WML-Decks auf eine andere Card, die alle durch eine ID gekennzeichnet sind. |
17.27.3 Der Gateway
Das Handy ruft nicht direkt die Informationen von einem Web-Server ab, sondern wendet sich an ein Gateway (auch WAP-Server genannt) eines Mobilfunkanbieters, zum Beispiel D1, D2, E-Plus oder O2. Dieser sitzt als Vermittler zwischen dem Handy und dem Internet. Da das Handy keinen HTML- beziehungsweise WML-Quellcode im ASCII-Format anzeigen kann, übersetzt das Gateway die Internet-Seiten in ein spezielles Binärformat (WBXML). Dieses ist viel kompakter als das ASCII-Format und spart somit Bandbreite. Damit das Gateway weiß, welche Datei es vom Server holen muss, schickt das Handy die Information mit auf den Weg. Dann kontaktiert das Gateway den Web-Server, holt die Daten und komprimiert sie, falls nötig - das ASCII-Format für die normalen Seiten würde zu viel Bandbreite einnehmen. Die Übersetzung kann ausfallen, wenn auf dem Server schon die komprimierte Datei liegt. Dies sollte sie aus Geschwindigkeitsgründen auch, da dann das Gateway die Daten schneller an das Handy liefern kann.
Entwicklung von Seiten ohne Gateway
Das Nokia-Toolkit übersetzt beim Testen die WML-Datei selbstständig in Binärcode. Daher ist dies zur Entwicklung der Seiten sehr praktisch, da wir nicht extra ein Gateway benötigen. Es gibt neben dem Nokia Toolkit noch andere Anbieter wie Motorola, Phone.com, Ericson, die neben der Visualisierung einen Compiler eingebunden haben. Diese Toolkits sind zwar nicht unbedingt kleiner, aber manchmal schneller. Dass die Nokia-Simulation in Java implementiert ist, wird schon am Speicherverbrauch und an der Geschwindigkeit deutlich. Die reinen Anzeigeprogramme gibt es im Internet etwas häufiger, doch diese implementieren keinen Compiler. Daher sind diese Anzeigeprogramme als Download wesentlich kleiner, benötigen aber immer ein Gateway, der dann die Seiten übersetzt, oder einen externen Compiler. Mit dieser Lösung ist die Entwicklung jedoch umständlicher.
Der Gateway WAPLite
Wenn wir eigene WML-Dateien für das Handy schreiben wollen, benötigen wir ein Gateway und dessen Funktion als Übersetzer. Das Toolkit allein reicht nicht aus. Dabei werden wir natürlich nicht auf einen Mobilfunkanbieter zurückgreifen, sondern uns einen Server lokal installieren. Der WAPLite-Server der Firma NOW wireless ist ein einfaches, schnelles WAP-Gateway unter Windows, das kompatibel zur WAP-v1.2-Spezifikation arbeitet. Von der Web-Seite http://www.nowwireless.co.uk/NOW_Wireless_WAPlite.html können wir WAPLite beziehen und das Programm installieren. Es läuft nach dem Starten als Windows-Service, die Demo jedoch nur 60 Tage. Nach der Installation müssen wir nur im Reiter Stats die Schaltfläche Install Service aktivieren, und das ist alles.
Beispiel Jetzt können wir im elektronischen Telefon zum Beispiel die folgende URL eingeben:
|
Das Handy wendet sich nun an WAPLite, der wiederum an den Web-Server und dann fließen die Daten zurück an das Handy. Wenn später unser Web-Server lokal läuft, können wir auch URLs der Form
http://localhost/trallala.wml
eingeben.
Der Gateway WAPLite stellt dabei auch die eigene Adresse local zur Verfügung. In diesem Fall liefert direkt das Gateway die Informationen, und der Weg über das Internet oder einen Web-Server wird nicht gemacht. Im Handy können wir zum Beispiel http://local/waplite.wml eingeben, dann kommen wir auf eine lokale Standardseite, die jedoch sofort an ein Internet-Angebot weiterleitet. Das Basisverzeichnis und Wurzelverzeichnis für die WAP-Dateien steht nach der Installation auf E:\WAPLITE\WML. Unter dem Reiter »Advertising« lässt sich der Pfad nachträglich anpassen. Da wir aber mit einem Web-Server arbeiten, benötigen wir im Folgenden local nicht weiter.
Kannel
Ein freies WAP (und SMS)-Gateway ist Kannel (http://www.kannel.org/). Er steht unter der FreeBSD-Lizenz und läuft in erster Linie unter Linux, lässt sich aber auch mit Cynwin unter Windows übersetzen. Die Dokumentation ist sehr umfassend und die Entwicklung rege.
17.27.4 WML-Seiten aufbauen
Wenn wir ein Servlet programmieren, das eine WML-Seite generiert, dann müssen wir zunächst einen speziellen MIME-Typ senden:
response.setContentType( "text/vnd.wap.wml" );
Anschließend können wir normale WML-Tags mit Inhalt schicken. Das zwischengeschaltete Gateway übernimmt die Übersetzung in den Binärcode. Um das Ganze zu konkretisieren, betrachten wir folgendes Servlet.
Listing 17.27 WAPAngebot.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class WAPAngebot extends HttpServlet
{
public void doGet( HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType( "text/vnd.wap.wml" );
PrintWriter out = response.getWriter();
out.println( "<?xml version=\"1.0\"?>" +
"<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\""+
"\"http:///www.wapforum.org/DTD/wml_1.1.xml\">" +
"<wml><card id=\"card\" title=\"Examples\"><p>"+
new Date()+"</p></card></wml>" );
}
}
Haben wir das Servlet compiliert, so kann abschließend im Handy die URL zum Servlet eingegeben werden. Sie lautet:
http://localhost:8080/examples/servlet/WAPAngebot
Die Anfrage läuft nun über das Gateway zu Tomcat. Dieser schickt die ASCII-Datei zu WAPLite zurück, der es compiliert. Binär kodiert kommt es zum Handy, das es anzeigt.
17.27.5 Interessante Links zum Thema Servlets/JSP
|
http://www.servlets.com/
Mehr oder weniger eine Werbeseite von J. Hunter, dem Autor des bekannten Servlet- Buchs im O'Reilly Verlag |
|
http://theserverside.com/
Die Seite versteht sich als Portal für Enterprise JavaBeans. Es bietet Diskussionsforen für EJB und für Servlets beziehungsweise JSPs. |
1 WAP 1.0 war SMS-basiert und ist nicht weit verbreitet, in Deutschland überhaupt nicht. WAP 1.1 ist der aktuelle Standard, auf dem die Dienste basieren. WAP 1.2 bietet unter anderem verschlüsselte Übertragung an, ist aber noch in der Vorbereitung.
|