Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel (8. Auflage)

Java ist auch eine Insel (8. Aufl.)
8., aktual. Auflage, geb., mit DVD
1.475 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1371-4
Pfeil 20 JavaServer Pages und Servlets
Pfeil 20.1 Dynamisch generierte Webseiten
Pfeil 20.1.1 Was sind Servlets?
Pfeil 20.1.2 Was sind JavaServer Pages?
Pfeil 20.2 Servlets und JSPs mit Tomcat entwickeln
Pfeil 20.2.1 Servlet-Container
Pfeil 20.2.2 Entwicklung der Servlet-/JSP-Spezifikationen
Pfeil 20.2.3 Webserver mit Servlet-Funktionalität
Pfeil 20.2.4 Tomcat installieren
Pfeil 20.2.5 Ablageort für eigene JSPs
Pfeil 20.2.6 Web-Applikationen
Pfeil 20.2.7 Zuordnung von Web-Applikationen zu physikalischen Verzeichnissen
Pfeil 20.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers entwickeln
Pfeil 20.3 Statisches und Dynamisches
Pfeil 20.3.1 Statischer Template-Code
Pfeil 20.3.2 Dynamische Inhalte
Pfeil 20.3.3 Kommentare
Pfeil 20.4 Die Expression Language (EL)
Pfeil 20.4.1 Operatoren der EL
Pfeil 20.4.2 Literale
Pfeil 20.4.3 Implizite EL-Objekte
Pfeil 20.5 Formulardaten
Pfeil 20.5.1 Einen Parameter auslesen
Pfeil 20.5.2 HTML-Formulare
Pfeil 20.6 Auf Beans zurückgreifen
Pfeil 20.6.1 Beans in JSPs anlegen
Pfeil 20.6.2 Properties einer Bean im EL-Ausdruck erfragen
Pfeil 20.6.3 Properties mit <jsp:setProperty> setzen
Pfeil 20.6.4 Bean-Klasse zum Testen von E-Mail-Adressen
Pfeil 20.6.5 Parameterwerte in Bean übertragen
Pfeil 20.7 JSP-Tag-Libraries
Pfeil 20.7.1 Standard Tag Library (JSTL)
Pfeil 20.8 Einbinden und Weiterleiten
Pfeil 20.8.1 Einbinden von Inhalten
Pfeil 20.8.2 Forward und Redirect
Pfeil 20.8.3 Applets einbinden
Pfeil 20.9 Scripting-Elemente in JSPs
Pfeil 20.9.1 Scriptlets
Pfeil 20.9.2 JSP-Ausdrücke
Pfeil 20.9.3 JSP-Deklarationen
Pfeil 20.9.4 Quoting
Pfeil 20.9.5 Entsprechende XML-Tags
Pfeil 20.9.6 Implizite Objekte für Scriptlets und JSP-Ausdrücke
Pfeil 20.10 JSP-Direktiven
Pfeil 20.10.1 page-Direktiven im Überblick
Pfeil 20.10.2 Mit JSPs Bilder generieren
Pfeil 20.11 Sitzungsverfolgung (Session Tracking)
Pfeil 20.11.1 Lösungen für Sitzungsverfolgung
Pfeil 20.11.2 Auf Session-Dateien zurückgreifen
Pfeil 20.12 Servlets
Pfeil 20.12.1 Servlets compilieren
Pfeil 20.12.2 Servlet-Mapping
Pfeil 20.12.3 Der Lebenszyklus eines Servlets
Pfeil 20.12.4 Mehrere Anfragen beim Servlet und die Thread-Sicherheit
Pfeil 20.12.5 Servlets und Sessions
Pfeil 20.12.6 Weiterleiten und Einbinden von Servlet-Inhalten
Pfeil 20.13 Zum Weiterlesen


Galileo Computing - Zum Seitenanfang

20.2 Servlets und JSPs mit Tomcat entwickeln Zur nächsten ÜberschriftZur vorigen Überschrift

Um Servlets und JavaServer Pages entwickeln und testen zu können, benötigen wir einen servlet-fähigen Webserver beziehungsweise einen Servlet-Container. Mittlerweile gibt es eine große Anzahl von Herstellern, deren Server Servlets verwalten.


Galileo Computing - Zum Seitenanfang

20.2.1 Servlet-Container Zur nächsten ÜberschriftZur vorigen Überschrift

Servlets und Applets sind konzeptionell ähnlich. Daher kann ein Vergleich gewagt werden: Applets werden vom Webbrowser geladen und gestartet. Den Browser können wir dabei als Container für Applets betrachten, der eine Infrastruktur wie die virtuelle Maschine oder Netzwerkeigenschaften bereitstellt. Innerhalb einer Java-Umgebung im Browser können durchaus mehrere Applets parallel eingebunden sein, die untereinander kommunizieren. Genauso verhält es sich mit Servlets. Auch hier benötigen wir einen Container, der alle Servlets verwaltet. Dieser kann entweder in einem Webserver eingebettet sein oder in einem Applikationsserver. Der Container leitet dann Anfragen an das Servlet weiter. Neben der Kommunikation nach außen verwaltet der Container den Lebenszyklus eines Servlets, genau wie ein Browser darüber wacht, ob das Applet gerade sichtbar ist oder nicht. Bei Servlets sieht ein solcher Vorgang wie folgt aus: Ein Client richtet eine HTTP-Anfrage an den Webserver. Dieser bemerkt, dass es sich um ein Servlet handelt, und gibt die Anfrage an den Container weiter. Dieser wiederum verwaltet alle Servlets, spricht genau das Servlet an, das der Benutzer nutzen wollte, und übergibt Datenströme zur Ein- und Ausgabe. Das Servlet liest über den Eingabekanal optional Formularinhalte und generiert über den Ausgabestrom eine HTML-Seite, die der Container an den Client weiterreicht.


Galileo Computing - Zum Seitenanfang

20.2.2 Entwicklung der Servlet-/JSP-Spezifikationen Zur nächsten ÜberschriftZur vorigen Überschrift

Servlets gibt es schon seit 1995 und damit sehr lange. JSPs kamen etwas später, haben sich jedoch genauso in den Jahren weiterentwickelt. Während die ersten Versionen 1.0 und 1.1 ausschließlich Sun entwarf, lag beginnend bei den Spezifikationen für JSP 1.2 und Servlet 2.3 der Entwurf beim Java Community Process (JSR 53). Ende 2003 war der Abschluss vom JSR 152 für die JSP 2.0- und JSR 154 für die Servlet 2.4-Spezifikation. Im Mai 2006 gab es kleine Aktualisierungen der JavaServer Pages auf Version 2.1 (JSR 245) und ein »Maintenance Release« beim bestehenden JSR 154 als Servlet 2.5-Spezifikation. Sie integrierten die neuen Spracheigenschaften von Java 5, etwa die Annotation @Resource zum Injizieren von Objekten aus dem JNDI. Beide Standards sind Teil von Java EE 5.


Galileo Computing - Zum Seitenanfang

20.2.3 Webserver mit Servlet-Funktionalität Zur nächsten ÜberschriftZur vorigen Überschrift

Sun führt auf der Firmen-Webseite http://java.sun.com/products/servlet/industry.html eine Liste von servlet-fähigen Servern auf. Ein Server ist genau dann servlet-fähig, wenn er die Java-Servlet- und JSP-Spezifikation erfüllt. Drei freie Server sind:

  • Apache Tomcat. Tomcat ist ein Produkt der Apache Software Foundation und steht quell-offen unter der Apache-Lizenz. Tomcat 6 implementiert die aktuellen Standards JSP 2.1 und Servlet 2.5. Tomcat 5.5 ist die offizielle Referenzimplementierung der Servlet 2.4- und JSP 2.0-Spezifikation. Zum Testen von Servlets und JSPs kann Tomcat entweder als Standalone-Applikation eingesetzt oder auch in den Apache-Server eingebunden werden. Er ist wie der Apache-Server frei und zu finden unter http://tomcat.apache.org/.
  • Jetty. Ein weiterer freier HTTP-Server und Servlet-Container unter der Apache-Lizenz ist Jetty (http://jetty.mortbay.org/). Jetty lässt sich leicht in eigene Programme einbauen, die Servlet-/JSP-Funktionalität benötigen, um etwa Web-Services anzubieten. Jetty 6 bietet Unterstützung für den aktuellen Servlet 2.5-Standard.

Galileo Computing - Zum Seitenanfang

20.2.4 Tomcat installieren Zur nächsten ÜberschriftZur vorigen Überschrift

Der Tomcat-Server liegt unter http://tomcat.apache.org/download-60.cgi als komprimiertes Archiv (.zip oder .tar.gz) oder Installer für Windows (.exe) zum Laden bereit. Wir entscheiden uns für das Zip-Archiv apache-tomcat-6.0.18.zip, das wir auspacken müssen – im Folgenden wird der Pfad C:\Programme\apache-tomcat-6.0 angenommen. Im Verzeichnis von Tomcat gibt es folgende Unterordner:


bin

Ordner mit Batch-Skripten zum Starten/Beenden des Servers

conf

Konfigurationsdateien

lib

Jar-Dateien von Tomcat und für eigene Web-Applikationen

logs

Logging-Dateien

temp

Ordner für temporäre Dateien

webapps

Web-Applikationen

work

Servlets, die aus JSPs generiert wurden


Tomcat definiert zwei Teilprojekte mit den Namen Catalina und Jasper. Catalina ist für Servlets zuständig, und Jasper ist der JSP-Compiler, der JavaServer Pages in Servlets übersetzt. Jasper ist selbst ein Servlet. Bei einer Installation sind beide Teile aktiv.

Starten und Beenden

Im Ordner bin befindet sich zum Starten eine Batch-Datei startup (mit der Endung .bat für Windows und .sh für Unix-Systeme). Die könnte sofort gestartet werden, Tomcat setzt aber eine gesetzte Umgebungsvariable JAVA_HOME voraus. Über die Systemeigenschaften könnten wir diese Variable setzen, doch wählen wir den einfachen Weg und editieren für Windows startup.bat. Die ersten Zeilen werden dann etwa sein:

Listing 20.3 C:\Programme\apache-tomcat-6.0\bin\startup.bat

@echo off 
SET JAVA_HOME=C:\Programme\Java\jdk1.6.0 
if "%OS%" == "Windows_NT" setlocal

Jetzt lässt sich Tomcat über startup starten, und Konsolenmeldungen erscheinen. Ein Blick im Browser auf die lokale Adresse http://localhost:8080/ zeigt die Tomcat-Startseite. Hier finden sich Beispiele und die APIs für das Paket.

Konfiguration

Im Unterverzeichnis conf liegt die XML-Datei server.xml, die wichtigste Konfigurationsdatei für den Server. Hier lässt sich beispielsweise der Port anpassen; ohne Veränderung der Voreinstellungen installiert sich der Webserver auf dem lokalen Rechner auf Port 8080.


Galileo Computing - Zum Seitenanfang

20.2.5 Ablageort für eigene JSPs Zur nächsten ÜberschriftZur vorigen Überschrift

Die Hauptseite, die bei http://localhost:8080/ im Browser bezogen wird, befindet sich physikalisch unter: C:\Programme\apache-tomcat-6.0\webapps\ROOT\index.jsp.

Unsere erste JSP wollen wir zum Testen direkt unter ROOT setzen.

Listing 20.4 C:\Programme\apache-tomcat-6.0\webapps\ROOT\date.jsp

<html><body> 
Hallo Nutzer. Wir haben heute 
<%= new java.util.Date() %>. 
</body></html>

Im Browser steuert die URL http://localhost:8080/date.jsp diese neue JSP an. Jasper übersetzt die JSP in ein Servlet und führt es aus, sodass der Browser etwa anzeigt:

Hallo Nutzer. Wir haben heute Fri Jul 20 09:05:05 CEST 2007.

Dass unsere JSPs unter ROOT liegen, ist zwar praktisch, aber unprofessionell. Wir sollten sie in ein anderes Verzeichnis legen. So können wir ohne Schwierigkeiten unsere Projekte weitergeben und müssen uns auch bei einer Neuinstallation von Tomcat keine Sorgen machen. Dafür ist jedoch etwas Konfigurationsaufwand erforderlich. Vereinfachen können wir uns die Arbeit, indem wir ein Eclipse-Plugin nutzen.


Galileo Computing - Zum Seitenanfang

20.2.6 Web-Applikationen Zur nächsten ÜberschriftZur vorigen Überschrift

Eine Web-Applikation definiert die logische Struktur der Elemente, die zu einer Web-Anwendung gehören. Insbesondere sind diese Elemente statische Webseiten, Bilder und Medien, JSPs und Servlets, externe Bibliotheken, Tag-Libraries, Beans und Applets. Jeder Web-Applikation wird ein eigenes Verzeichnis zugeordnet, in dem es eine vordefinierte Verzeichnisstruktur gibt. Von besonderer Bedeutung ist das Unterverzeichnis WEB-INF, das auch Tomcat für Beispiel-Web-Applikationen nutzt:

  • C:\Programme\apache-tomcat-6.0\webapps\examples\WEB-INF
  • C:\Programme\apache-tomcat-6.0\webapps\ROOT\WEB-INF

In WEB-INF stehen Objekte, die der Webserver nicht nach außen freigibt, etwa Servlet-Klassen, obwohl die Servlets selbst natürlich nutzbar sind. Des Weiteren findet sich in WEB-INF eine Datei web.xml, der so genannte Deployment-Descriptor. Unter WEB-INF können zusätzlich die Unterverzeichnisse classes und lib definiert werden, so wie Tomcat es auch für die Web-Applikation examples vornimmt.

  • classes. Das Verzeichnis nimmt übersetzte Java-Klassen auf. Das können Servlets, Java-Beans oder andere Klassen sein. Der Servlet-Container nimmt die Objekte automatisch in den Suchpfad mit auf.
  • lib. Im Unterverzeichnis lib stehen Jar-Archive, die ebenfalls in den Suchpfad aufgenommen werden.

Tomcat beginnt mit der Suche nach Klassen im Verzeichnis WEB-INF/classes und sucht, falls die Klassen dort nicht zu finden waren, anschließend in WEB-INF/lib weiter. Unter dem Ordner lib direkt im Installationsverzeichnis von Tomcat können applikationsübergreifende Bibliotheken abgespeichert sein.


Beispiel So kann die Verzeichnisstruktur einer Web-Applikation aussehen:

index.jsp login.jsp pics/logo.gif WEB-INF/web.xml WEB-INF/table.tld

WEB-INF/lib/driver.jar WEB-INF/classes/com/tutego/servlet/ChartServlet.class WEB-INF/classes/com/tutego/beans/Customer.class



Galileo Computing - Zum Seitenanfang

20.2.7 Zuordnung von Web-Applikationen zu physikalischen Verzeichnissen Zur nächsten ÜberschriftZur vorigen Überschrift

Um nicht unter dem webapps-Ordner die Web-Applikationen ablegen zu müssen, gilt es, die Datei conf/server.xml im Tomcat-Verzeichnis zu modifizieren. Dort ist ein Eintrag eingebunden, der genau den Pfad auf unser Projekt angibt, sodass Tomcat einer Web-Applikation ein Verzeichnis zuordnen kann. Die Zuordnung geschieht dabei mit einem XML-Eintrag Context im Host-Element, der unter http://tomcat.apache.org/tomcat-6.0-doc/config/context.html genau beschrieben ist.


Beispiel Mit einen neuen Eintrag in server.xml kommen die Beispiele des Buches in einen neuen Kontext:

<Context path="/web" 
         docBase="C:/Insel/programme/20_JSPServlets/WebContent" 
         reloadable="true" />

Nach der Änderung muss Tomcat neu gestartet werden. Nach dem Start befinden sich die JSPs dann unter http://localhost:8080/web/.



Galileo Computing - Zum Seitenanfang

20.2.8 Web-Projekt mit Eclipse IDE for Java EE Developers entwickeln topZur vorigen Überschrift

Mit der Eclipse IDE for Java EE Developers (vorgestellt in Kapitel 1, »Java ist auch eine Sprache«) ist die Entwicklung von JSPs und Servlets genauso komfortabel wie mit der NetBeans-IDE.

Einen Server anmelden

Zuerst soll Tomcat als Web-Container angemeldet werden. Wir wählen dazu unter WindowPreferences… im Baum unter Server den Eintrag Server Runtime Environments. Unter Add... öffnet sich ein neuer Dialog, wo wir im Baum Apache dann Apache Tomcat v6.0 auswählen und mit Next einen weiteren Dialog bekommen. Dort ist der Installationsort von Tomcat einzutragen, etwa C:\Programme\apache-tomcat-6.0. Finish beendet den kleinen Dialog, und anschließend ist auch im Preferences-Dialog der Tomcat Server eingetragen.

Jetzt kann Eclipse grundsätzlich etwas mit Tomcat anfangen, aber die Tomcat-Instanz soll in einer eigenen Eclipse-View angezeigt und verwaltet werden. (Die View ist in der Java EE-Perspektive automatisch eingeblendet.) Falls die Ansicht nicht sichtbar ist, aktivieren wir sie unter WindowShow View und wählen dann unter Server den Punkt Servers. In der neuen View ist – falls noch nicht eingetragen – im Kontextmenü unter NewServer der Tomcat v6.0 Server auszuwählen und mit Finish zu übertragen.

Ein neues Web Project

Nach dem Bekanntmachen des Servers können wir das Web-Projekt anlegen. (Ohne es verschweigen zu wollen: Auch dort lässt sich noch der Server anlegen.)

1. Wir wählen dazu File N New N Other…, dann unter Web den Eintrag Dynamic Web Project.
2. Im neuen Dialog New Dynamic Web Project geben wir bei Project name einen Projektnamen an. Für mein Kapitel wähle ich 20_JSPServlets.
3. Unter Target Runtime ist unser Apache Tomcat ausgewählt. Bei mehreren Servern oder Servern, die vorher unter den Einstellungen nicht angemeldet wurden, kann jetzt noch schnell ein Server bestimmt werden.
4. Finish würde das Projekt schon jetzt abschließen, doch wir wollen noch den Namen der Context Root anpassen. Im nächsten Dialog unter Next vergibt das WTP als Standardnamen den Namen des Projekts. Das möchte ich in web ändern. Jetzt darf Finish den Wizard abschließen und das WTP unser Projekt aufbauen.

Die logische Verzeichnisstruktur ist wie folgt:

  • Unter Java Sources: src befinden sich Java-Quellen für Servlets, Beans, Tag-Implementierungen und ganz allgemeine Quellcodeklassen.
  • Das Verzeichnis WebContent bildet das Dokumenten-Wurzelverzeichnis mit den üblichen Web-Applikationsverzeichnissen WEB-INF und META-INF sowie der zentralen Datei web.xml.

Eine neue HTML-/JSP-Seite

Ist im Projektbaum WebContent selektiert, finden sich im Kontextmenü unter New die Einträge HTML und JSP. In beiden Fällen ist der Dateiname anzugeben – ohne Dateiendung. Ein Ende mit Finish liefert eine Seite mit Standard-Vorlage; wählen wir Next, können wir eine Vorlage auswählen.

Ist eine JSP oder HTML-Seite angelegt, kann mit gestartetem Tomcat-Server einfach der interne Webbrowser über das Kontextmenü Run AsRun on ServerFinish die Seite anzeigen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Tipp
Zum Katalog: Coding for Fun





 Coding for Fun


 Buchempfehlungen
Zum Katalog: Objektorientierte Programmierung





 Objektorientierte
 Programmierung


Zum Katalog: Einstieg in Eclipse 3.4






 Einstieg in
 Eclipse 3.4


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans
 Platform 6


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de