<jsptutorial />

Einleitung


Motivation

JavaServer Pages (JSP) erfreuen sich einer immer größeren Beliebtheit, und der Einsatz hat sich im Jahr 2003 lt. einer Erhebung von Netcraft fast verdoppelt. (link) Trotzdem gibt es nur wenige Einführungen und Tutorials und praxisnahe Empfehlungen. Zwar gibt es einige Bücher zum Thema (eine Liste mit Büchern zum Thema und Besprechungen dieser wird nach und nach auf diesen Seiten eingepflegt werden; s. dazu die Literaturliste). Webbasierte Tutorials und Empfehlungen zur Nutzung dieser Technologie finden sich allerdings nur wenige - und noch weniger in deutscher Sprache.
Diese Lücke wollen wir mit diesem Tutorial schließen. Dabei soll hier die gesamte Breite der Thematik abgedeckt werden. Es finden sich für die Einsteigerin1 Hilfestellungen für die ersten Schritte mit JSPs, und die fortgeschrittene Nutzerin wird hier Informationen zu Neuerungen (bspw. der Expression Language aus der kommenden JSP-Version) und Tipps zu Fragen des Designs, der Testbarkeit und zum Einsatz bestehender Frameworks finden.
Die Syntax alleine bildet nicht den Schwerpunkt dieses Tutorials. Sie wird zwar selbstverständlich auch behandelt, doch wir meinen, dass diese nur einen Teil der gesamten Technologie ausmacht. Schwerpunktmäßig geht es uns mehr um konkrete Tipps und Tricks für die tägliche Praxis und darum wie man JSPs tatsächlich und - gerade auch in größeren Projekten - effektiv einsetzt. Daher wird in diesem Tutorial besonderes Augenmerk auf eine saubere Entwicklung und auf eine Berücksichtigung von Design-Aspekten gelegt, die Verwendung von Frameworks angeregt und diese am Beispiel von Struts erläutert. Einsteigerinnen finden selbstverständlich alle notwendigen Informationen, um sich zu den fortgeschritteneren Themen vorzuarbeiten.

Zum SeitenanfangZum Seitenanfang

Wozu JSPs

JavaServer Pages bilden eine mächtige Möglichkeit, serverseitig Web-Anwendungen zu erstellen. Heutzutage sind diese längst eine Selbstverständlichkeit. In den Anfangstagen des World Wide Web Anfang und Mitte der Neunziger Jahre allerdings waren Websites zunächst rein statische Angelegenheiten. Es gab Seiten, die sich zwar mittels der Hyperlinks untereinander referenzierten, aber es gab weder die Möglichkeit, auf Benutzereingaben zu reagieren, noch dynamische Daten auszugeben, wie bspw. Börsendaten, News etc., ohne jedes Mal die Seiten neu anpacken zu müssen. Angesichst des Erfolges des WWW bereits in diesem frühen Stadium wurden jedoch schnell diverse Technologien geschaffen, um diese Beschränkung zu umgehen (s. etwas weiter unten "Abgrenzung zu anderen Technologien"). Servlets und JSPs waren SUN Microsystems Reaktion auf diese Fortentwicklung der Web-Technologien. Diese ermöglichen es nun, mittels Java auf Datenbanken zuzugreifen, Grafiken neu zu berechnen, Nutzereingaben zu verarbeiten, bzw. allgemein unter Ausnutzung von Java eine dynamische Reaktion auf die Nutzer-Anfrage unter Berücksichtigung seiner vorherigen Interaktionen zu generieren. Die Kombination mit Java und mehr noch die Einbettung in die J2EE-Technologien machen die enorme Flexibilität und das enorme Potenzial der Java-basierten Webtechnologien JSP und Servlets aus.

Zum SeitenanfangZum Seitenanfang

JSPs und die Java 2 Enterprise Edition

JSPs sind Bestandteil der Java 2 Enterprise Edition (J2EE), einem Standard um hochkomplexe, verteilte Anwendungen zu erstellen. Seit ihrer Einführung ist J2EE immer weiter gewachsen, sind neue Bestandteile hinzugekommen. Sie umfasst inzwischen eine Unmenge von Technologien, die häufig bei der Entwicklung von unternehmensweiten Anwendungen zum Tragen kommen.
Einige wichtige Bestandteile sind:


Damit sind noch lange nicht alle Bestandteile aufgeführt, aber ein erster Überblick über wichtige Technologien gegeben. JSPs und Servlets werden im Rahmen von J2EE vor allem genutzt, um den browserbasierten Zugriff auf diese Systeme zu gewährleisten. J2EE bildet zwar nicht den Schwerpunkt dieses Tutorials, doch wird in einem eigenen Kapitel darauf soweit eingegangen werden, dass Interessierte einen leichten Zugang zu den weiteren Themen der J2EE-Entwicklung (EJB, JCA, WebServices) finden können. Wir sehen vor allem in der Kombination von JSPs/Servlets mit den anderen J2EE-Technologien eine große Stärke der Java-basierten Entwicklung von Web-Anwendungen.
Der Einsatz der vollen Technologie-Palette von J2EE ist aber nicht notwendig, um mit JSPs/Servlets funktionsfähige und gute Web-Anwendungen entwickeln zu können. Es gibt genügend reine Servlet/JSP-Container, die einen isolierten Einsatz von JSPs ermöglichen. Vielfach ist dies auch sinnvoller, als aufgeblähte Anwendungen unter Einsatz von EJBs und anderer J2EE-Technologien zu erstellen. Wann EJBs und andere Bestandteile der Enterprise Edition Sinn machen und wann es vollkommen ausreicht, eine reine JSP/Servlet-Anwendung zu erstellen, das werden wir ausgiebig im J2EE-Kapitel diskutieren.

Zum SeitenanfangZum Seitenanfang

Was für wen interessant ist

Das Tutorial richtet sich an Web-Designerinnen in JSP-Projekten, an Programmiererinnen webbasierter Applikationen, an System-Architektinnen und zum kleineren Teil auch an System-Administratorinnen.
Bei den folgenden Abschnitten werden die Themen mit fortschreitendem Inhalt natürlich verlinkt. Bis dahin erfolgt eine grobe und unvollständige Auflistung einiger Themen für die jeweilige Zielgruppe.

Zum SeitenanfangZum Seitenanfang

Was vorausgesetzt wird

Auch wenn nicht für alle Bereiche der Entwicklung Java-basierter Webanwendungen Java selbst von Bedeutung ist, so wird in diesem Tutorial dennoch an allen Stellen davon ausgegangen, dass sowohl Java selbst als auch zumindest die grundlegenden objektorientierten Konzepte wie bspw. Kapselung, Polymorphismus oder Vererbung bekannt sind. Es wird mit Sicherheit an keiner Stelle Java selbst erklärt. Dazu wird auf das exzellente Tutorial von Sun (link) verwiesen. Bestimmte Bereiche sind aber auch ohne Kenntnisse von Java verständlich und sinnvoll zu lesen. S. dazu den obigen Abschnitt "Was ist für wen interessant" und hier besonders die Abschnitte, was für Web-Designerinnen, bzw. was für Administratorinnen von Bedeutung ist. Die meisten der dort aufgeführten Abschnitte kann man ohne Kenntnisse der Programmiersprache Java verstehen.
Neben Java werden ebenso Kenntnisse in HTML und XML vorausgesetzt. Zu HTML verweisen wir auf "selfhtml" (link). Und zu Java einmal auf das ausgezeichnete englischsprachige Tutorial bei SUN (link) und auf die im Web frei zugänglichen HTML-Ausgaben der Bücher "Java ist auch eine Insel" (link) und "Handbuch der Java-Programmierung" - frühere Ausgaben erschienen als "Goto Java" (link).

Zum SeitenanfangZum Seitenanfang

Was bewusst ausgelassen wird

Da wir der Meinung sind, dass eine saubere Trennung zwischen Darstellung und Logik oder gar der Persistenz-Schicht notwendig ist, wird in diesem Tutorial nirgends direkt JDBC in den JSP-Seiten verwandt, auch wenn man die immer wieder in Büchern und anderen (englischen) Tutorials findet. Lediglich bei der Vorstellung der Java Standard Tag Library wird hierauf ganz kurz eingegangen. Dafür werden wir an gegebener Stelle deutlich machen, wieso wir den Einsatz von JDBC innerhalb von JSPs selbst für nicht sinnvoll halten.
Zudem behandeln wir hier nur die aktuelle JSP-Version 1.2 sowie alle Neuerungen der kommenden JSP-Version 2.0 (und demnächst sicher auch Folge-Versionen). Ältere JSP-Versionen werden hier nicht behandelt.

Zum SeitenanfangZum Seitenanfang

Ein erstes "Hello World!"

Wie in Einführungen in Programmiersprachen üblich wollen wir auch hier mit einer ersten einfachen JSP anfangen, um kurz zu zeigen, um was es sich bei JSPs überhaupt handelt, bevor wir JSPs im nächsten Abschnitt gegenüber anderen Technologien abgrenzen. Im Kapitel "Tomcat als lokaler Testserver" wird gezeigt, wie man einen Servlet-Container einrichtet, so dass man diese JSP auch wirklich ansehen kann. Hier geht es nur um einen ersten Blick auf die Syntax.3

<html>
<head><title>First Example</title></head>
<body>
<h3>Hello World-JSP</h3>

Your browser is: <%= request.getHeader("User-Agent") %><br>
Your IP address is: <%= request.getRemoteAddr() %><br>

</body>
</html>

Code im Extrafenster ausführen

Zum SeitenanfangZum Seitenanfang

Anmerkungen:

1) Es wird bei Nutzerinnen und Nutzern hier stets die weibliche Form verwendet. Selbstverständlich ist der männliche Nutzer ebenfalls stets angesprochen. (zurück)

2) In Java sind alle Methoden-Aufrufe synchrone Aufrufe. D.h. dass die aufrufende Methode erst dann in der Bearbeitung fortfahren kann, wenn die aufgerufene Methode ihre Arbeit erledigt hat. Asynchrones Messaging macht es möglich, dass direkt nach Aufnahme der zu übertragenden Nachricht an das Messaging-System die aufrufende Methode mit der Arbeit fortfährt. Der Empfänger muss zum Zeitpunkt des Versendes einer Nachricht nicht einmal unbedingt erreichbar sein. Das Messaging-System stellt eine ggf. notwendige verzögerte Übertragung sicher. (zurück)

3) Dieses Beispiel verwendet Skripting-Tags, die unter JSP 2.0 ausgeschaltet werden können. Skripting-Tags werden ausführlich im Kapitel zur Syntax vorgestellt, und dort wird auch darauf hingewiesen, warum man sie normalerweise möglichst meiden sollte. Sie dienen hier nur als ein Beispiel. Das gleiche Ergebnis werden wir in diesem Tutorial noch öfter erhalten, aber dann auf elegantere Weise ;-) (zurück)


www.jsptutorial.org
© 2005, 2006, 2007