30
Ein Buch zum Mitmachen und Verstehen Bryan Basham, Kathy Sierra & Bert Bates Deutsche Übersetzung von Jörg Beyer & Lars Schulten O REILLY Deckt die aktuelle Version der SCWCD-Prüfung für J2EE 1.5 ab Mit c:out verbreiten Sie Ihre Botschaft in der Welt Erfahren Sie, wie Egon mit dynamischen Attributen seine Attraktivität steigern konnte Vermeiden Sie tödliche Stolperfallen in der 1.5-Prüfung von Kopf bis Fuß Sicher durch die Prüfung zum Sun Certified Web Component Developer Servlets & JSP Deutsche Ausgabe der 2. englischen Auflage TM Mehr als 200 realistische Prüfungsfragen zum Selbsttest Spielen Sie mit Taglibs herum

Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

  • Upload
    haduong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Ein Buch zum Mitmachen und Verstehen

Bryan Basham, Kathy Sierra & Bert Bates Deutsche Übersetzung von Jörg Beyer & Lars SchultenO’Reilly

Deckt die aktuelle Version der

SCWCD-Prüfung für J2EE 1.5 ab

Mit c:out verbreiten Sie Ihre Botschaft in

der Welt

Erfahren Sie, wie Egon mit dynamischen Attributen seine Attraktivität steigern konnte

Vermeiden Sie tödliche

Stolperfallen in der 1.5-Prüfung

von Kopf bis FußSicher durch die Prüfung zum Sun Certified Web Component Developer

Servlets & JSP Deutsche

Ausgabe

der 2. englischen AuflageTM

Mehr als 200 realistische Prüfungs fragen zum Selbsttest

Spielen Sie mit Taglibs

herum

Page 2: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen. D.h., wenn Sie beispielsweise ein Kernkraftwerk unter Verwendung dieses Buchs betreiben möchten, tun Sie dies auf eigene Gefahr. Sollten Sie allerdings eine ungeheuer erfolgreiche Dotcom-Firma auf Basis dieses Buchs führen, dann erinnern Sie sich doch bitte an die Autoren. Sie nehmen Aktienoptionen, Bier und/oder dunkle Schokolade entgegen.

Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. 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.

Kommentare und Fragen können Sie gerne an uns richten:

O’Reilly VerlagBalthasarstr. 8150670 KölnTel.: 0221/9731600Fax: 0221/9731608E-Mail: [email protected]

Copyright der deutschen Ausgabe:© 2009 by O’Reilly Verlag GmbH & Co. KG1. Auflage 2009

Die Originalausgabe erschien 2008 unter dem TitelHead First Servlets & JSP, Second Edition bei O’Reilly Media, Inc.

Java™ und alle auf Java basierenden Warenzeichen und Logos sind in den USA und in anderen Ländern Warenzeichen oder registrierte Warenzeichen von Sun Microsystems, Inc. O’Reilly Media, Inc. und der O’Reilly Verlag GmbH & Co. KG sind von Sun Microsystems unabhängig.

Bibliografische Information Der Deutschen BibliothekDie Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Deutsche Übersetzung und Bearbeitung: Jörg Beyer, Weimar (Lahn) & Lars Schulten, KölnLektorat: Christine Haite, KölnKorrektorat: Sibylle Feldmann, DüsseldorfSatz: Conrad Neumann, MünchenUmschlaggestaltung: Edie Freedman, Louise Barr & Steve Fehler, BostonProduktion: Andrea Miß, KölnBelichtung, Druck und buchbinderische Verarbeitung: Media-Print, Paderborn

ISBN 978-3-89721-873-4

Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

Page 3: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Wer auch immer entschieden hat, dass das implizite EL-Objekt für einen context-Parameter den Namen initParam tragen soll … ihm sei dieses Buch gewidmet.

Page 4: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

iv

Die Verantwortlichen für die Von Kopf bis Fuß-Reihe (und dieses Buch)

Kathy Sierra

Kathys Interesse für Lerntheo-rien und das Gehirn reicht bis in ihre Zeit als Game-Designer (sie schrieb Spiele für Virgin, MGM und Amblin’) und AI-Entwickler zurück. Große Teile des Von Kopf bis Fuß-Formats hat sie während ihrer Lehrtätigkeit zu New Media Interactivity im UCLA Extension’s Entertainment Studies-Programm entwickelt. In jüngerer Zeit arbei-tete sie als Master-Trainer bei Sun Microsystems, wo sie Suns Java-Instruktoren beibringt, wie man die neuesten Java-Technologien vermit-telt, und einige von Suns Zertifizie-rungsprüfungen entwickelt, unter anderem das SCWCD. Gemeinsam mit Bert Bates hat sie die Von Kopf bis Fuß-Konzepte eingesetzt, um Tausende von Entwicklern zu unterrichten. Sie gründete eine der größten Java-Community-Websites im ganzen Internet, javaranch.com, die 2003 und 2004 den Producti-vity Award des Software Develop-ment-Magazins erhielt. Sie mag Laufen, Skifahren, Pferde, Skate-boards und durchgeknallte Wissen-schaft.

Bert ist ein erfahrener Software-entwickler und Architekt. Aber der ein Jahrzehnt umfassende Abste-cher in die künstliche Intelligenz ließ sein Interesse an Lerntheorie und technologiebasiertem Lernen wachsen. Das erste Jahrzehnt seiner Softwarekarriere verbrachte er damit, durch die Welt zu reisen und Rundfunkkunden wie Radio New Zealand, Weather Channel und Arts and Entertainment Network (A&E) zu unterstützen. Aktuell ist er Mitglied des Entwicklungsteams für mehrere Zertifizierungsprüfungen von Sun, unter anderem für das neue SCWCD.

Bert ist seit Langem ein hoffnungslos verlorener go-Spieler und werkelt schon viel zu lang an einem go-Pro-gramm herum. Vielleicht ist Java jetzt so ausdrucksfähig, dass er es beenden kann. Er spielt ordentlich Gitarre und versucht sich zurzeit am Banjo. Sein neuestes Abenteuer ist der Erwerb eines Islandponys, das seine Trainerfähigkeiten vor eine neue Herausforderung stellen sollte ...

Bert Bates

Sie erreichen uns unter:

[email protected]

[email protected]

[email protected]

Bryan Basham

Die Autoren

Bryan hat mehr als 20 Jahre Erfahrung in der Softwareent-wicklung und hat unter anderem bei der NASA unter Einsatz von KI-Techniken fortgeschrittene Automatisierungsoftware entwi-ckelt. Außerdem hat er für ein Beratungsunternehmen gearbeitet, wo er maßgeschneiderte OO-Businessanwendungen geschrieben hat. Zurzeit ist Bryan Kursent-wickler für Sun. Dabei befasst er sich hauptsächlich mit Java und OO-Entwurfsprinzipien. Er hat an vielen von Suns Java-Kursen mitgewirkt, unter anderem JDBC, J2EE, Servlets und JSP sowie OO Software Development. Außer-dem war er Chefdesigner bei der ursprünglichen und der neuen Version der SCWCD-Prüfung.

Bryan ist praktizierender Zen- Buddhist, Ultimate Frisbee-Spieler, Hi-Fi-Freak und fährt Telemark-Ski.

Page 5: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

v

Über die Übersetzer dieses BuchsLars Schulten ist freier Übersetzer für IT-Fachlitera-tur und hat für den O’Reilly Verlag schon unzählige Bü-cher zu ungefähr allem übersetzt, was man mit Compu-tern so anstellen kann. Eigentlich hat er mal Philosophie studiert, aber mit Computern schlägt er sich schon seit den Zeiten herum, da Windows laufen lernte. Die Liste der Dinge, mit denen er sich beschäftigt, ist ungefähr so lang, launenhaft und heterogen wie die seiner Lieblings-essen und Lieblingsbücher.

Java ist ihm Ende der 90er Jahre das erste Mal über den Weg gelaufen. Er hat seitdem schon eine Reihe von Bü-chern zu Java übersetzt, darunter Java – kurz & gut, Java von Kopf bis Fuß und das Java-Kochbuch.

Allein tritt er eigentlich nur auf, wenn er mal wieder ver-sucht, den körperlichen Verfall mit sportlicher Betätigung aufzuhalten. Sonst ist er immer in Begleitung eines Buchs, seines Laptops oder Frederics unterwegs. Frederic muss jetzt zur Schule gehen und Lars hofft, dass er bald so weit ist, dass er ihm den mühseligeren Teil des Übersetzerge-schäfts abnehmen kann.

Jörg Beyer lebt seit Beginn seines Studiums der Psy-chologie bei Marburg. Aus seiner Zeit als Schreiner hat er die Überzeugung mitgenommen, dass gutes Werkzeug ein Wert an sich und gute Arbeit ohne gutes Werkzeug undenkbar ist. Deshalb liebt er seinen Mac so sehr.

Im Lauf der Jahre hat er sich allerhand angeeignet, um sich sein Arbeitsleben leichter zu machen und seinem Lieblingswerkzeug neue Kunststückchen beizubringen: Perl, AppleScript, Datenbankentwicklung und SQL, XML, R, … eine lange, wenn auch nicht endlose Liste, die von seinem kleinen inneren Zensor gerne als »dieser Zettel mit den halben Sachen« kommentiert wird, wenn er mal schlechte Laune hat.

Wenn Jörg sich nicht gerade mit klinischer Forschung und Statistik beschäftigt oder sich mit dem Übersetzen von IT-Literatur für O’Reilly befasst, hört er gerne und viel elektronische Musik oder unterhält sich mit Freunden über das, was die Welt des Menschen wohl im Innersten zusammenhält. Wer in seinem Humor und in seinen Ansichten Anklänge an Douglas Adams, John Irving und Astrid Lindgren entdeckt, liegt richtig.

Die Übersetzer

Page 6: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Weitere O’Reilly-Bücher zum gleichen Themenkreis

Ant: The Definitive GuideBetter, Faster, Lighter Java™Enterprise JavaBeans™ 3.0Hibernate: A Developer’s NotebookJava™ 1.5 Tiger: A Developer’s NotebookJava™ KochbuchJava™ in a NutshellJava™ Network ProgrammingJava™ Servlet & JSP CookbookJava™ SwingJavaServer™ FacesJavaServer Pages™Programming Jakarta StrutsTomcat: The Definitive Guide

Weitere Bücher in O’Reillys Von Kopf bis Fuß-Reihe

Java™ von Kopf bis FußObjektorientierte Analyse and Design (OOA&D) von Kopf bis FußAjax von Kopf bis FußHTML mit CSS und XHTML von Kopf bis FußEntwurfsmuster von Kopf bis FußSQL von Kopf bis FußSoftwareentwicklung von Kopf bis FußC# von Kopf bis FußJavaScript von Kopf bis FußHead First EJB™Head First PMPHead First ProgrammingHead First AjaxHead First PhysicsHead First StatisticsHead First Ruby on RailsHead First PHP & MySQL

Page 7: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

vii

Inhalt (in der Übersicht)

Inhalt (jetzt ausführlich)Einführung

Für wen ist dieses Buch? xviii

Wir wissen, was Ihr Gehirn denkt xix

Metakognition xxi

Machen Sie sich Ihr Hirn untertan xxiii

Was Sie für dieses Buch brauchen xxiv

Die Zertifizierungsprüfung bestehen xxvi

Die Fachgutachter xxviii

Danksagungen xxix

Einführung xvii

1 Warum Servlets & JSPs: Eine Einführung 1

2 Architektur von Webanwendungen: Ein Überblick 37

3 Mini-MVC-Kurs: MVC-Praktikum 67

4 Leben als Servlet: Anfrage UND Antwort 93

5 Leben als Webanwendung: Attribute und Listener 147

6 Kommunikation mit Zustand: Session-Management 223

7 Wie es ist, eine JSP zu sein: JSP im Einsatz 281

8 Skriptfreie Seiten: Skriptfreie JSP 343

9 Benutzerdefinierte Tags sind mächtig: JSTL im Einsatz 439

10 Wenn selbst die JSTL nicht ausreicht: Benutzerdefinierte Tags entwickeln 499

11 Ihre Webanwendung verteilen: Deployment von Webanwendungen 601

12 Geschützt und sicher: Sicherheit von Webanwendungen 649

13 Die Macht der Filter: Wrapper und Filter 701

14 Enterprise-Entwurfsmuster: Muster und Struts 737

A Appendix A: Abschlussprüfung 791

I Index 865

Ihr Gehirn und Servlets. Sie versuchen, etwas zu lernen, und Ihr Hirn gibt

sein Bestes, damit das Gelernte nicht hängen bleibt. Es denkt nämlich: »Wir sollten

lieber ordentlich Platz für wichtigere Dinge lassen, z.B. für das Wissen darüber, welche

Tiere einem gefährlich werden könnten oder dass es eine ganz schlechte Idee ist, nackt

Snowboard zu fahren.« Tja, wie schaffen wir es nun, Ihr Gehirn davon zu überzeugen,

dass Ihr Leben davon abhängt, etwas über Servlets zu wissen?

E

Page 8: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

viii

Warum Servlets & JSPs?1

Prüfungsanforderungen 2

Was Webserver und Clients machen und wie sie sich unterhalten 4

HTML-Schnellkurs 7

Was ist das HTTP-Protokoll? 10

Anatomie von GET- und POST-Anfragen und HTTP-Antworten 16

Webseiten über URLs auffinden 20

Webserver, statische Webseiten und CGI 24

Servlets entmystifiziert: Ein Servlet schreiben, verteilen und ausführen 30

JSPs: Als HTML mit Java bekannt gemacht wurde 34

Webanwendungen sind toll. Wie viele GUI-Programme kennen Sie,

die weltweit von Millionen von Anwendern benutzt werden? Als Entwickler von

Webanwendungen können Sie sich aus dem Schwitzkasten der Deployment-Probleme

befreien, mit denen alle Desktop-Programme zu tun haben, und Ihr Programm jedem

verfügbar machen, der einen Browser hat. Aber Sie brauchen Servlets und JSPs. Weil

diese ganz normalen statischen HTML-Seiten so, na ja, etwa von 1999 sind. Erfahren Sie,

wie man von Websites zu Webanwendungen kommt.

Architektur von Webanwendungen2Prüfungsanforderungen 38

Was ein Container ist und was er Ihnen bietet 39

Wie der Code aussieht (und was ein Servlet macht) 44

Servlets benennen und über den DD URL zuordnen 46

Geschichte: Björns Dating-Site (und MVC-Einführung) 50

Das Model-View-Controller-Muster (MVC) 54

Ein »laufender« Deployment Descriptor (DD) 64

Wie sich J2EE in all das fügt 65

Servlets brauchen Hilfe. Beim Eintreffen einer Anfrage muss jemand das

Servlet instantiieren oder zumindest einen neuen Thread anlegen, um die Anfrage zu

bearbeiten. Jemand muss die doPost()- oder doGet()-Methode des Servlets aufrufen.

Jemand muss Anfrage und Antwort zum Servlet durchreichen. Jemand muss sich um den

Lebenszyklus des Servlets kümmern und es versorgen. In diesem Kapitel werden wir uns

den Container ansehen und einen ersten Blick auf das MVC-Muster werfen.

HTTP-Anfrage

HTTP-Antwort

Client

Web- browser

Server

Schlüsselelemente des Anfrage-Streams:$ HTTP-Methode (die Aktion, die ausgeführt werden soll)$ die Seite, die aufgerufen werden

soll (eine URL)$ Formularparameter (z.B. Argumente für einen Methodenaufruf)

Schlüsselelemente des Antwort-

Streams:

$ ein Statuscode (ob der Aufruf

erfolgreich war)

$ Art des Contents (Text, Bilddaten,

HTML usw.)

$ der Content selbst (das

eigentliche HTML, Bilder usw.)

Controller

Servlet

View

JSP

ModelDB

class Foo { void bar() { doBar(); }}

Ganz normaler Java-Code.

Page 9: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

ix

Mini-MVC-Kurs3

Prüfungsanforderungen 68

Erstellen wir eine MVC-Anwendung – der erste Entwurf 69

Die Entwicklungs- und Deployment-Umgebungen aufbauen 72

Das HTML für die anfängliche Formularseite erstellen und testen 75

Den Deployment Descriptor (DD) erstellen 77

Das Controller-Servlet erstellen, kompilieren, verteilen und testen 80

Die Model-Komponenten erstellen, kompilieren und testen 82

Den Controller das Model aufrufen lassen 83

Die View-Komponente (eine JSP) erstellen und verteilen 87

Das Controller-Servlet die JSP aufrufen lassen 88

Legen Sie eine MVC-Webanwendung an und nehmen Sie sie in Betrieb. Es wird Zeit, die Ärmel hochzukrempeln und ein HTML-Formular, ein Control-

ler-Servlet, ein Modell (eine ganz normale Java-Klasse), einen XML-Deployment Descrip-

tor und als View eine JSP zu schreiben. Zeit zum Erstellen, Bereitstellen und Testen. Aber

zunächst müssen Sie Ihre Entwicklungsumgebung einrichten. Und dann müssen Sie Ihre

Deployment-Umgebung so gestalten, wie es die Servlet- und JSP-Spezifikationen sowie

Tomcat verlangen. Es stimmt schon, es ist eine sehr kleine Anwendung, die wir hier erstel-

len. Es gibt aber so gut wie KEINE Anwendung, die zu klein für das MVC ist.

Leben als Servlet4Prüfungsanforderungen 94

Das Leben eines Servlets im Container 95

Servlet-Initialisierung und Threads 101

Die WAHRE Aufgabe eines Servlets: GET- und POST-Anfragen 105

Die Geschichte der Anfrage, die nicht idempotent war 112

Was festlegt, ob Sie eine GET- oder eine POST-Anfrage erhalten 117

Parameter senden und verwenden 119

Das war die Anfrage ... und wie sieht die Antwort aus? 126

Sie können Antwort-Header setzen und hinzufügen 133

Servlet-Umleitung vs. Anfrageweiterleitung 136

Zusammenfassung: HttpServletResponse 140

Servlets brauchen Unterstützung. Der Job eines Servlets ist es, die Anfra-

ge eines Clients entgegenzunehmen und eine Antwort zurückzugeben. Die Anfrage kann

etwas Einfaches sein: »Zeig mir die Startseite!«, oder etwas Komplexes: »Mach mir die

Abrechnung für meinen Einkaufskorb fertig!«. Die Anfrage transportiert wichtige Daten,

und der Code Ihres Servlets muss wissen, wo er sie suchen und was er damit machen

soll. Und Ihr Servlet-Code muss wissen, wie man eine Antwort versendet. Oder nicht ...

tomcat

Dieser Verzeichnisname entspricht gleichzeitig dem Kontextwurzelver-zeichnis (context root), das von Tomcat benutzt wird, um eine URL aufzulösen. Wir werden dieses Konzept in allen Details im Deployment-Kapitel untersuchen.

Diese Paketstruktur entspricht exakt der, die wir für die Entwicklungsumgebung benutzt haben. Falls Sie Ihre Klassen nicht in einem JAR bereitstellen (worüber wir später im Buch sprechen werden), müSSEn Sie das Paketver-zeichnis unmittelbar unterhalb von WEB-InF/classes anlegen.

Der Tomcat-spezi-fische Teil

Der Teil aus der Servlet-Spezifika-tion

Die An-wendung

Die web.xml-Datei mUSS in WEB-InF liegen.web.xml

<webapp> . .</webapp>

webapps

Bier-v1

WEB-INF

web

0010 00011100 1001

BierExperte.class

0010 00011100 1001

BierAuswahl.class

<html><body> ...</body></html>

form.html result.jsp

libclasses

model

com

example

Tomcat

<% ...%>

Aber Idempotenz ist doch nichts, dessen man sich

schämen muss …

Client

Servlet

POST ... ...

DB

Servlet benutzt die POST-Daten, um die Datenbank zu aktualisieren.

HTTP/1.1 200 OK......................<html><head> ...</head><body><img src=...></body></html>

Servlet schickt eine Antwort mit einer generierten HTML-Seite zurück.

NiChT idempotent

Page 10: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

x

Leben als Webanwendung5Prüfungsanforderungen 148

Initialisierungsparameter und ServletConfig greifen ein 149

Wie eine JSP Servlet-Initialisierungsparameter erhält 155

Kontextinitialisierungsparameter retten uns 157

ServletConfig und ServletContext im Vergleich 159

Sie möchte einen ServletContextListener 166

Tutorial: Ein einfacher ServletContextListener 168

Listener kompilieren, verteilen und testen 176

Die ganze Geschichte: ServletContextListener im Überblick 178

Acht Listener: Sie sind nicht nur für Kontext-Events gedacht ... 180

Was genau ist ein Attribut? 185

Die Attribute-API und die dunkle Seite von Attributen 189

Der Kontextgültigkeitsbereich ist nicht Thread-sicher! 192

Das Problem in Zeitlupe ... 193

Probieren Sie es mit Synchronisierung 195

Sind Sitzungsattribute Thread-sicher? 198

Das SingleThreadModel 201

Nur Anfrageattribute und lokale Variablen sind Thread-sicher! 204

Anfrageattribute und Anfrageweiterleitung 205

Kein Servlet ist unabhängig. In heutigen, modernen Webanwendungen

arbeiten viele Komponenten zusammen, um ein gemeinsames Ziel zu erreichen. Man

hat Models, Controller und Views. Man hat Parameter und Attribute. Und Hilfsklassen.

Aber wie verbinden Sie diese Teile zu einem Ganzen? Wie bringen Sie Ihre Komponenten

dazu, Informationen auszutauschen? Wie verbergen Sie Informationen? Wie machen Sie

Informationen Thread-sicher? Von Ihren Antworten könnte Ihr Leben abhängen.

Anfrageattribute

"BierEmpfehlung""Lüneburger Löschschaum"Servlet

<html><body><jsp:setProperty name="foo" property="bar"></body></html>

JSP-View

set get

Controller

<html><body><jsp:setProperty name="foo" property="bar"></body></html>

JSP-View

Servlet

Servlet A

Sitzungsattribute

set get

Einkaufswage

n

Servlet

Servlet B

get

set

Nur für diejenigen zugänglich, die Zugriff auf eine bestimmte HttpSession haben.

Nur für diejenigen zugänglich, die Zugriff auf ein bestimmtes ServletRequest-Objekt haben.

Kontextattribute

DB

Datenbank-verbindung

"Geichzeitige Benutzer"

42

"Admin- E-Mail"

[email protected]

ContextListener

set

Servlet

get

set

<html><body><jsp:setProperty name="foo" property="bar"></body></html>

JSP

Servlet

Servlet

set

get

get

get

Innerhalb der Anwendung haben alle Zugriff.

Page 11: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xi

Kommunikation mit Gedächtnis6 Webserver besitzen kein Langzeitgedächtnis. Sobald sie Ihnen eine Antwort ge-

schickt haben, vergessen sie, wer Sie sind. Wenn Sie das nächste Mal eine Anfrage schicken, werden

Sie schon nicht mehr wiedererkannt. Mit anderen Worten, sie erinnern sich nicht daran, was Sie in der

Vergangenheit angefordert haben, und sie erinnern sich nicht daran, was sie Ihnen als Antwort zurück-

geschickt haben. Manchmal muss aber über mehrmalige Anfragen hinweg der Kommunikationszu-

stand zwischen Client und Server festgehalten werden.

Wie es ist, eine JSP zu sein7 Eine JSP wird zu einem Servlet. Ein Servlet, das Sie nicht erstellen. Der Container sieht

sich Ihre JSP an, übersetzt sie in Java-Quellcode und kompiliert diesen zu einer vollständigen Java-

Servlet-Klasse. Aber Sie müssen wissen, was passiert, wenn der Code, den Sie in der JSP geschrieben

haben, in Java-Code umgewandelt wird. Sie k�nnen in Ihre JSP Java-Code schreiben, aber sollten Sie

das auch? Und was schreiben Sie, wenn Sie keinen Java-Code verwenden? Wie erfolgt die Übersetzung

in Java-Code? In diesem Kapitel werden wir uns sechs verschiedene Arten von JSP-Elementen ansehen

– die alle einen eigenen Zweck und, auch das, eine eigene Syntax haben. Sie lernen wie, warum und was

Sie in Ihre JSP schreiben. Und Sie erfahren, was Sie in Ihre JSP nicht schreiben sollten.

Prüfungsanforderungen 224

Es sollte eine Unterhaltung sein

(darüber, wie Sitzungen funktionieren) 226

Sitzungs-IDs, Cookies und weitere Sitzungsgrundlagen 231

URL-Rewriting: etwas, auf das man zurückgreifen kann 237

Wenn Sitzungen veralten; faule Sitzungen loswerden 241

Kann ich Cookies auch für andere Zwecke einsetzen? 250

Wichtige Meilensteine einer HttpSession 254

Vergessen Sie HttpSessionBindingListener nicht 256

Sitzungsmigration 257

Listener-Beispiele 261

Prüfungsanforderungen 282

Mit »out« und einer Page-Direktive eine einfache JSP erstellen 283

JSP-Ausdrücke, Variablen und Deklarationen 288

Das zu einer JSP generierte Servlet 296

Die Variable out ist nicht das einzige implizite Objekt ... 298

Der Lebenszyklus und die Initialisierung einer JSP 306

Etwas mehr zu den drei Direktiven 314

Scriptlets sollen schädlich sein? – Hier ist EL 317

Moment ... etwas fehlt noch: Aktionen 323

<html><body><jsp:setProperty name=”foo” property=”bar”></body></html>

DieJSP.jsp

package head-first;

import javax.servlet.HttpServlet.*;

DieJSP_jsp.java

Servlet-Objekt

0010 00011100 10010001 00110101 0110

DieJSP_jsp.class

schreiben übersetzen

kompil

ieren

laden und initiali-sieren als

DieJSP_jsp-Servlet

Okay, hier hast du meine Anfrage

inklusive Cookie.

Cookies

HTTP/1.1 200 OK

Set-Cookie: JSESSIONID=0AAB6C8DE415

Content-Type: text/html

Content-Length: 397

Date: Wed, 18 Jun 2008 13:25:40 GMT

Server: Apache-Coyote/1.1

Connection: close

<html>...

</html>

POST /Waehlen/BierGeschmackWahl2.do HTTP/1.1

Host: www.wickedlysmart.comUser-Agent: Mozilla/5.0 Cookie: JSESSIONID=0AAB6C8DE415Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/

gif ;q=0.2,*/*;q=0.1Accept-Language: en-us,en;q=0.5Accept-Encoding: gzip,deflate

»Set-Cookie« ist einfach bloß ein weiterer Header, der mit der Antwort verschickt wird.

»Cookie« wird als zusätzlicher Header mit der Anfrage verschickt.

Hier hast du ‘n Cookie, ist auch eine Session-ID für dich

drin …

HTTP-Response

HTTP-Request

Page 12: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xii

Skriptfreie Seiten8

Prüfungsanforderungen 344

Wenn Attribute Beans sind 345

Standardaktionen: useBean, getProperty, setProperty 349

Kann man polymorphe Bean-Referenzen machen? 354

Das param-Attribut schafft Abhilfe 360

Properties konvertieren 363

Expression Language (EL) rettet uns! 368

Mit dem Punktoperator (.) auf Properties und Map-Werte zugreifen 370

[ ] bietet mehr Möglichkeiten (Listen, Arrays ...) 372

Weitere Einzelheiten zum Punktoperator und [ ] 376

Die impliziten EL-Objekte 385

EL-Funktion und der Umgang mit »null« 392

Wiederverwendbare Teile – zwei Arten von »Include« 402

Die <jsp:forward />-Standardaktion 416

Sie kennt JSTL-Tags noch nicht (eine Vorschau) 417

Zusammenfassung von Standardaktionen und Includes 417

Befreien Sie sich vom Scripting. Können Ihre Webdesigner tatsächlich

Java? Erwarten sie von den für den Server verantwortlichen Java-Programmierern,

dass sie, hmm, sagen wir, Grafiker sind? Und selbst wenn Sie allein das gesamte

Team bilden ... wollen Sie in Ihren JSPs wirklich einen Haufen kleiner Fetzen Java-

Code haben? Schon mal etwas von »Wartungsalbtraum« gehört? Skriptfreie Seiten

zu schreiben, ist nicht bloß m�glich. Mit der neuen JSP-2.0-Spezifikation ist es, dank

der neuen Expression Language (EL), auch viel einfacher und flexibler geworden.

EL ist an JavaScript und XPath angelehnt und sorgt dafür, dass Webdesigner sich

gleich zu Hause fühlen – und auch Sie werden EL mögen (wenn Sie sich einmal daran

gewöhnt haben). Aber es gibt einige Fallen ... EL sieht aus wie Java, ist es aber nicht.

Manchmal verhält sich EL anders als die gleiche Syntax in Java. Geben Sie also acht!

Erwartet nicht, dass ICH eure

überflüssigen Start- und End-Tags entferne.

Kontakt.jsp

<html><body>

<%@ include file=”Header.jsp”%> <br>

<em>Wir können helfen.</em> <br><br> Sie erreichen uns unter: ${initParam.hauptEmail}

<%@ include file=”Footer.html”%>

</body></html>

Wir wissen, wie man SOAP weniger nervend macht.

http://localhost:8080/tests/Kontakt.jsp

Wir können helfen.

Sie erreichen uns unter: [email protected]

Homepage

<img src=”images/Web-Services.jpg” > <br><em><strong>Wir wissen, wie man SOAP weniger nervend macht.</strong></em> <br>

Die Kopfleiste (»Header.jsp«)

<a href=”index.html”>Homepage</a>

Die Fußleiste (»Footer.html«)

1

2

3

1

2

3

Beachten Sie, dass wir alle HTmL- und BODY-Tags aus der eingeschlossenen Datei entfernt haben.

Hinweis: Das Entfernen der Start- und End-Tags gilt für BEIDE Include-mechanismen

– <jsp:include> und die Include-Direktive.

Page 13: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xiii

Benutzerdefinierte Tags sind mächtig9 Manchmal brauchen Sie mehr als EL und Standardaktionen. Was ist, wenn Sie die Daten in einem Array durchlaufen und zeilenweise in einer

HTML-Tabelle anzeigen wollen? Sie wissen, dass Sie das mit einer for-Schleife in einem

Scriptlet in zwei Sekunden schreiben könnten. Aber Sie versuchen ja, das Scripting

loszuwerden. Kein Problem. Wenn EL und Standardaktionen nicht ausreichen, können

Sie benutzerdefinierte Tags oder Custom-Tags verwenden. Sie sind in JSPs genauso

einfach zu verwenden wie Standardaktionen. Noch besser ist, dass schon ein ganzer

Haufen für Sie geschrieben und zur JSP Standard Tag Library (JSTL) gebündelt wurde.

In diesem Kapitel werden Sie lernen, wie man benutzerdefinierte Tags verwendet, im

nächsten werden wir unsere eigenen erstellen.

Prüfungsanforderungen 440

Schleifen ohne Scripting: <c:forEach> 446

Bedingter Ablauf mit <c:if> und <c:choose> 451

Die Tags <c:set> und <c:remove> einsetzen 455

<c:import> ist das dritte Verfahren zum Einschließen von Inhalten 460

Das Einzuschließende anpassen 462

Das Gleiche mit <c:param> machen 463

<c:url> erfüllt all Ihre Hyperlink-Bedürfnisse 465

Erstellen Sie Ihre eigenen Fehlerseiten 468

Das Tag <c:catch>. Wie try/catch ... so ungefähr 472

Was ist, wenn Sie ein Tag benötigen, dass die JSTL nicht bietet? 475

Achten Sie auf <rtexprvalue> 480

Was im Body eines Tags stehen kann 482

Der Tag-Handler, der TLD und die JSP 483

Der Taglib-<uri> ist bloß ein Name, kein Ort 484

Wenn eine JSP mehrere Tag-Libraries verwendet 487

<table>

<c:forEach var=”listElement” items=”${filme}” > <c:forEach var=”film” items=”${listElement}” > <tr> <td>${film}</td> </tr> </c:forEach>

</c:forEach>

</table>

Äußere Schleife.

Innere Schleife

Das ArrayList-Anfrageattribut.

Eins der String-Arrays, das dem »var«-Attribut der äußeren Schleife zugewiesen wurde..

http://localhost:8080/testJSP1/Tester.do

Matrix RevolutionsKill BillBen HurAmelieDie Rückkehr des KönigsCasablanca

Aus dem ersten String[]

Aus dem zweiten String[]

Page 14: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xiv

Wenn selbst die JSTL nicht ausreicht ...10 Manchmal reichen die JSTL und Standardaktionen nicht aus. Wenn Sie etwas Angepasstes benötigen und nicht zum Scripting zurückwollen, können Sie

Ihre eigenen Tag-Handler schreiben. Dann können Ihre Seitendesigner Ihr Tag in ihren Sei-

ten verwenden, während die ganze harte Arbeit im Hintergrund in Ihrer Tag-Handler-Klasse

abgewickelt wird. Aber es gilt drei verschiedene Wege, eigene Tag-Handler aufzubauen ...

es gibt also, eine Menge zu lernen. Von den drei Wegen wurden zwei mit JSP 2.0 eingeführt,

um Ihnen das Leben zu erleichtern (einfache Tags und Tag-Dateien).

ihre Webanwendung verteilen11 Endlich ist Ihre Webanwendung bereit für das wahre Leben. Ihr

Seiten sind ausgefeilt, Ihr Code getestet und abgestimmt und der Abgabetermin vor zwei Wo-

chen verstrichen. Aber wo kommt der ganze Kram hin? So viele Verzeichnisse, so viele Re-

geln. Welche Namen geben Sie Ihren Verzeichnissen? Welche Namen erwartet der Client?

Was fordert der Client tatsächlich an, und wie weiß der Container, wo er suchen muss?

Prüfungsanforderungen 500

Tag-Dateien: Wie Include, nur besser 502

Wo der Container nach Tag-Dateien sucht 509

Einfache Tag-Handler 513

Ein einfaches Tag mit Body 514

Was ist, wenn der Tag-Body einen Ausdruck verwendet? 519

Auch klassische Tag-Handler müssen Sie noch beherrschen 529

Ein sehr kleiner klassischer Tag-Handler 531

Rückgabewerte steuern den Lebenszyklus eines klassischen Tags 536

Mit IterationTag können Sie den Body wiederholen 537

Default-Rückgabewerte von TagSupport 539

Das Interface DynamicAttributes 556

BodyTag liefert Ihnen zwei neue Methoden 563

Was ist, wenn Tags kooperieren müssen? 567

Die PageContext-API bei Tag-Handlern einsetzen 577

Prüfungsanforderungen 602

Die Deployment-Schlüsselanforderung: Was gehört wohin? 603

WAR-Dateien 612

Wie Servlet-Mapping TATSÄCHLICH funktioniert 616

Im DD Willkommen-Dateien konfigurieren 622

Im DD Fehlerseiten konfigurieren 626

Im DD die Servlet-Initialisierung konfigurieren 628

Eine XML-konforme JSP: JSP Document 629

Ich kannte benutzerdefinierte Tags nicht ... ich dachte, ich hätte nur

die JSTL,– und nichts darin machte, was der Manager wollte. Ach, hätte ich nur ge-

wusst, dass ich auch eigene aufbauen kann ... doch jetzt ist es zu spät für

mich. Lerne es ... und rette dich damit ...

Warum? Warum nur

hast du ihm nicht gesagt, das du es tun

kannst?

<ejb-local-ref>

<ejb-ref-name>ejb/Kunde</ejb-ref-name>

<ejb-ref-type>Entity</ejb-ref-type>

<local-home>com.wickedlysmart.KundeHome</local-home>

<local>com.wickedlysmart.Kunde</local>

</ejb-local-ref>

Eine lokale Bean referenzieren

JVM

Servlet

LOKAL bedeutet, dass der Client (hier das Servlet) und die Bean in der gleichen JVM laufen müssen.

ENTFERNT (remote) bedeutet hier, dass der Client (hier das Servlet) und die Bean in unterschiedlichen JVMs laufen können (möglicherweise auch auf unterschiedlichen Rechnern).

<ejb-ref>

<ejb-ref-name>ejb/LokalerKunde</ejb-ref-name>

<ejb-ref-type>Entity</ejb-ref-type>

<home>com.wickedlysmart.KundeHome</home>

<remote>com.wickedlysmart.Kunde</remote>

</ejb-ref>

Eine entfernte Bean referenzieren

JVM

Servlet

JVM

(Optionale Unterelemente für beide Tag sind unter anderem <description> und <ejb-link>. Aber die müssen Sie für die Prüfung nicht kennen.)

Das müssen vollständig qualifizierte namen der Interfaces sein, die von der Bean veröffentlicht werden.

Der JnDI-Lookup-

name, den Sie im Code

verwenden werden.

Page 15: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xv

Geschützt und sicher12 Ihre Webanwendung ist in Gefahr. Ärger lungert in jedem Winkel des Netzwerks. Sie

wollen nicht, dass die Bösen Buben die Transaktionen in Ihrem Onlinestore belauschen und Kredit-

kartennummern abfischen. Sie wollen nicht, dass die Bösen Buben Ihren Server überzeugen, dass

sie »Besonders Gute Kunden Mit Dicken Rabatten« sind. Und Sie wollen nicht, dass irgendwer (gut

ODER böse) sensible Angestelltendaten einsieht. Muss Tim aus dem Marketing wirklich wissen, dass

Lisa aus der Entwicklungsabteilung dreimal so viel verdient wie er?

Die Macht der Filter13 Mit Filtern können Sie Anfragen abfangen. Und wenn Sie die Anfrage abfangen

können, können Sie auch die Antwort steuern. Und das Beste ist: Das Servlet hat keine Ahnung.

Es erfährt nie, dass jemand zwischen die Anfrage vom Client und den Container-Aufruf der service()-

Methode des Servlets getreten ist. Was das für Sie bedeutet? Mehr Urlaub. Weil Sie die Zeit, die Sie

ansonsten damit verbringen würden, nur eins Ihrer Servlets anzupassen, stattdessen dem Schreiben

und Konfigurieren eines Filters widmen können, der dazu in der Lage ist, all Ihre Servlets zu beeinflus-

sen. Sie möchten jedes Servlet in Ihrer Anwendung mit einer Benutzerverfolgung ausstatten? Kein

Problem. Sie möchten die Ausgabe aller Servlets in Ihrer Anwendung anpassen? Kein Problem. Und

Sie müssen den Servlet-Code nicht einmal anrühren.

Prüfungsanforderungen 650

Die Großen 4 der Servlets-Sicherheit 653

Authentifizierung in der HTTP-Welt 656

Die zehn wichtigsten Argumente für deklarative Sicherheit 659

Wer in einer Webanwendung Sicherheit implementiert 660

Autorisierungsrollen und -einschränkungen 662

Die VIER Authentifizierungsarten 677

Daten bei der Übertragung sichern: HTTPS macht es möglich 682

Datenvertraulichkeit und -integrität spärlich und deklarativ 684

Prüfungsanforderungen 702

Den Filter zur Anfrageverfolgung schreiben 707

Der Lebenszyklus eines Filters 708

Filter deklarieren und anordnen 710

Ausgaben mit einem Antwortfilter komprimieren 713

Wrapper bringen es 719

Der wahre Kompressionsfilter-Code 722

Kompressions-Wrapper-Code 724

Die Top Ten der Gründe, Sich-erheit deklarativ zu machen

Wer braucht nicht mehr Übung mit XML?Entspricht häufig den vorhandenen Jobrollen in der IT-Abteilung eines Unternehmens.Sieht in Ihrer Zusammenfassung gut aus.

Reduziert die laufende Wartung, wenn Ihre Anwendung wächst.

Kommt in der Prüfung vor.

Ermöglicht Anwendungsentwicklern, Servlets wiederzuverwenden, ohne auf den Quellcode zuzugreifen.

Unterstützt das Konzept der komponentenbasierten Entwicklung.

Ermöglicht Ihnen, Servlets, die Sie bereits geschrieben haben, flexibler wiederzuverwenden.

Ist einfach cool.

Endlich eine Möglichkeit, die Kosten dieses Containers zu rechtfertigen ...

10

9

8

7

6

5

4

3

2

1

1

ServletA service()

111

1 5432

Wenn er die Anfrage erhält, ruft der Container die doFilter()-Methode von Filter3 auf, die läuft, bis sie auf ihren chain.doFilter()-Aufruf stößt.

Der Container schiebt die doFilter()-Methode von Filter7 oben auf den Stack - wo sie ausgeführt wird, bis sie den.doFilter()-Aufruf erreicht.

Der Container schiebt die service()-Metho-de von ServletA oben auf den Stack, die läuft, bis sie fertig ist und dann vom Stack herunter-genommen wird.

Der Container gibt die Ausführung an Filter7 zurück. Dort wird die Me-thode doFilter() abgeschlossen und dann vom Stack herunterge-nommen.

Der Container gibt die Ausfüh-rung an Filter3 zurück, dessen doFilter()-Metho-de abgeschlossen und vom Stack heruntergenom-men wird. Dann schließt der Container die Antwort ab.

Der Stack Der StackDer StackDer StackDer Stack

Filter3 doFilter(r,r,c)

Filter3 doFilter(r,r,c)

Filter3 doFilter(r,r,c)

Filter3 doFilter(r,r,c)

Filter3 doFilter(r,r,c)

Filter7 doFilter(r,r,c)

Filter7 doFilter(r,r,c)

Filter7 doFilter(r,r,c)

Page 16: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Inhaltsverzeichnis

xvi

index

Enterprise-Entwurfsmuster14 Irgendwer hat es bereits gemacht. Wenn Sie gerade mit der

Programmierung von Webanwendungen beginnen, haben Sie Glück. Sie können die

angesammelte Weisheit Zehntausender Entwickler nutzen, die diesen Weg schon hinter

sich haben und das T-Shirt besitzen. Mit J2EE-spezifischen und anderen Entwurfsmustern

können Sie Ihren Code und sich selbst das Leben erleichtern. Und für das wichtigste

Entwurfsmuster für Webanwendungen, MVC, gibt es sogar ein sehr beliebtes Framework,

Struts, das Ihnen hilft, flexible, wartbare Servlet-Front Controller zu schnitzen. Sie

schulden es sich selbst, die Arbeit aller anderen zu nutzen, damit Sie mehr Zeit mit den

wichtigen Dingen des Lebens verbringen können ...

ADer Abschlusstest. Das ist es. 69 Fragen. Sprache, Themen und

Schwierigkeitsgrad sind mit der tatsächlichen Prüfung fast identisch. Wir kennen uns

damit aus.

Prüfungsanforderungen 738

Hardware- und Softwarekräfte hinter Mustern 739

Zusammenfassung der Software-Entwurfsprinzipien ... 744

Muster zur Unterstützung entfernter Model-Komponenten 745

Überblick über JNDI und RMI 747

Das Business Delegate ist ein Vermittler 753

Zeit für ein Transfer Object? 759

Geschäftsschichtmuster: Kurzzusammenfassung 761

Rückkehr zu unserem allerersten Muster ... MVC 762

Ja! Das ist Struts (und Front Controller) in a Nutshell 767

Die Bier-Anwendung für Struts umgestalten 770

Zusammenfassung der Muster 778

Abschlusstest 791

Lösungen 828

i 865

View

Action-Servlet

Model

Form-Bean

<xml><validate> ...</validate><mapping> ...</mapping></xml>

struts-config.xml

Action- Objekt

Anfrage

1a 3a2a1b

2b 2c

3b

Kein Schon- kaffee

Kein Schon-kaffee

Struts in a Nutshell

Page 17: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xvii

EinführungWie man dieses Buch benutzt

Ich kann einfach nicht fassen, dass so etwas in einem Programmierbuch

steht!

In diesem Abschnitt beantworten wir die brennende Frage:

»Und? Warum STEHT so was in einem Programmierbuch?”

Page 18: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xviii Einführung

1

2

3

Für wen ist dieses Buch?

Wer sollte eher die Finger von diesem Buch lassen?

Wenn Sie alle folgenden Fragen mit »Ja« beantworten können:

Wenn Sie eine dieser Fragen mit »Ja« beantworten müssen:

... dann ist dieses Buch etwas für Sie.

... dann ist dieses Buch nicht das Richtige für Sie.

[Anmerkung aus dem Marketing: Dieses Buch ist

etwas für jeden, der eine Kreditkarte besitzt.]

Wissen Sie, wie man in Java programmiert (Sie müssen kein Guru sein)?

Basteln Sie gerne – lernen Sie, indem Sie etwas anwenden, statt einfach nur zu lesen? Möchten Sie Servlets und JSPs lernen, verstehen und im Kopf behalten und die SCWCD für Java EE 1.5-Prüfung bestehen?

Ziehen Sie anregende Partyunterhaltungen trockenen, öden, akademischen Vorlesungen vor?

1

2

4

Haben Sie keinerlei Java-Kenntnisse? Sie müssen kein fortgeschrittener Programmierer sein. Aber wenn Sie noch keinerlei Erfahrung haben, sollten Sie sich sofort ein Exemplar von Java von Kopf bis Fuß zulegen und zu diesem Buch hier zurückkehren, nachdem Sie das andere durchgearbeitet haben.

Sind Sie ein ausgebuffter Java-Programmierer auf der Suche nach einem Referenzbuch?

Haben Sie Angst, etwas Neues auszuprobieren? Würden Sie sich lieber einer Wurzelbehandlung unterziehen, als in einer Streifen-Karo-Kombination auf die Straße zu gehen? Sind Sie der Meinung, dass ein Fachbuch nicht seriös sein kann, wenn Java-Komponenten vermensch-licht werden?

3 Sind Sie ein Java EE-Veteran auf der Suche nach hypermodernen Ser-vertechniken, serverspezifischen How-tos, Enterprise-Architekturen und komplexem, robustem Code aus dem wahren Leben?

Wie man dieses Buch benutzt

Page 19: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xix

»Wie kann das ein ernsthaftes Programmierbuch sein?«

»Was sollen all die Abbildungen?«

»Kann ich auf diese Weise wirklich lernen?«

Na toll. Nur noch 800 trockene, langweilige Seiten.

Wir wissen, was Sie gerade denken.

Und wir wissen, was Ihr Gehirn gerade denkt.Ihr Gehirn lechzt nach Neuem. Es ist ständig dabei, Ihre Umgebung abzusu­chen, und es wartet auf etwas Ungewöhnliches. So ist es nun einmal gebaut, und es hilft Ihnen zu überleben.

Heutzutage ist es weniger wahrscheinlich, dass Sie von einem Tiger verputzt werden. Aber Ihr Gehirn hält immer noch Ausschau. Man weiß ja nie.

Also, was macht Ihr Gehirn mit all den gewöhnlichen, normalen Routine­sachen, denen Sie begegnen? Es tut alles in seiner Macht Stehende, damit es dadurch nicht bei seiner eigentlichen Arbeit gestört wird: Dinge zu erfassen, die wirklich wichtig sind. Es gibt sich nicht damit ab, die langweiligen Sachen zu speichern, sondern lässt sie gar nicht erst durch den »Das­hier­ist­offensicht­lich­nicht­wichtig«­Filter.

Woher weiß Ihr Gehirn denn, was wichtig ist? Nehmen Sie an, Sie machen einen Tagesausflug und ein Tiger springt vor Ihnen aus dem Gebüsch: Was passiert dabei in Ihrem Kopf und Ihrem Körper?

Neuronen feuern. Gefühle werden angekurbelt. Chemische Substanzen durchfluten Sie.

Und so weiß Ihr Gehirn:

Das muss wichtig sein! Vergiss es nicht!

Aber nun stellen Sie sich vor, Sie sind zu Hause oder in einer Bi­bliothek. In einer sicheren, warmen, tigerfreien Zone. Sie lernen. Bereiten sich auf eine Prüfung vor. Oder Sie versuchen, irgendein schwieriges Thema zu lernen, von dem Ihr Chef glaubt, Sie bräuch­ten dafür eine Woche oder höchstens zehn Tage.

Es gibt da nur ein Problem: Ihr Gehirn versucht Ihnen einen großen Gefallen zu tun. Es versucht dafür zu sorgen, dass diese offensichtlich unwichtigen Inhalte nicht knappe Ressourcen verstopfen. Ressour­cen, die besser dafür verwendet würden, die wirklich wichtigen Dinge zu speichern. Wie Tiger. Wie die Gefahren des Feuers. Oder dass Sie nie wieder in Shorts snowboarden sollten.

Und es gibt keine einfache Möglichkeit, Ihrem Gehirn zu sagen: »Hey, Gehirn, vielen Dank, aber egal, wie langweilig dieses Buch auch ist und wie klein der Ausschlag auf meiner emotionalen Richterskala gerade ist, ich will wirklich, dass du diesen Kram behältst.«

Ihr Gehirn denkt, DAS HIER ist wichtig.

Ihr Gehirn denkt,

DAS HIER zu

speichern lohnt

sich nicht.

Page 20: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xx Einführung

Es ist wirklich ätzend

eine abstrakte Methode

zu sein, so ganz ohne

Rumpf ...

abstract void bewegen();

Kein Methoden-Body !

Schließen Sie die

Deklaration mit einem

Semikolon ab.

berechnen()

return wert

Muss eine Metho-de auf dem Server aufrufen.RMI-Remote-Service

Wie man dieses Buch benutzt

Also, was ist nötig, damit Sie etwas lernen? Erst einmal müssen Sie es aufnehmen, und dann

dafür sorgen, dass Sie es nicht wieder vergessen. Es geht nicht darum, Fakten in Ihren Kopf

zu schieben. Nach den neuesten Forschungsergebnissen der Kognitionswissenschaft, der

Neurobiologie und der Lernpsychologie gehört zum Lernen viel mehr als nur Text auf einer

Seite. Wir wissen, was Ihr Gehirn anmacht.

Einige der Lernprinzipien dieser Buchreihe:

Bilder einsetzen. An Bilder kann man sich viel besser erinnern als an Worte allein und

lernt so viel effektiver (bis zu 89% Verbesserung bei Abrufbarkeits- und Lerntransfer-

studien). Außerdem werden die Dinge dadurch verständlicher. Text in oder neben

die Grafiken setzen, auf die sie sich beziehen, anstatt darunter oder auf eine andere

Seite. Die Leser werden auf den Bildinhalt bezogene Probleme dann mit doppelt so

hoher Wahrscheinlichkeit lösen können.

Verwenden Sie einen gesprächsorientierten Stil mit per-

sönlicher Ansprache. Nach neueren Untersuchungen haben

Studenten nach dem Lernen bei Tests bis zu 40% besser abgeschnitten, wenn

der Inhalt den Leser direkt in der ersten Person und im lockeren Stil anspricht statt in

einem formalen Ton. Halten Sie keinen Vortrag, sondern erzählen Sie Geschichten.

Benutzen Sie eine zwanglose Sprache. Nehmen Sie sich selbst nicht zu ernst. Würden

Sie einer anregenden Unterhaltung beim Abendessen mehr

Aufmerksamkeit schenken oder einem Vortrag?

Bringen Sie den Lernenden dazu, intensiver nachzudenken.

Mit anderen Worten: Falls Sie nicht aktiv Ihre Neuronen strapazieren,

passiert in Ihrem Gehirn nicht viel. Ein Leser muss motiviert, begeistert und neugierig sein

und angeregt werden, Probleme zu lösen, Schlüsse zu ziehen und sich neues Wissen anzueignen.

Und dafür brauchen Sie Herausforderungen, Übungen, zum Nachdenken anregende Fragen und

Tätigkeiten, die beide Seiten des Gehirns und mehrere Sinne einbeziehen.

Ziehen Sie die Aufmerksamkeit des Lesers auf sich – und behalten Sie sie. Wir alle haben

schon Erfahrungen dieser Art gemacht: »Ich will das wirklich lernen, aber ich kann einfach nicht

über Seite 1 hinaus wach bleiben.« Ihr Gehirn passt auf, wenn Dinge ungewöhnlich, inter-

essant, merkwürdig, auffällig, unerwartet sind. Ein neues, schwieriges, technisches

Thema zu lernen, muss nicht langweilig sein. Wenn es das nicht ist, lernt Ihr Gehirn viel

schneller.

Sprechen Sie Gefühle an. Wir wissen, dass Ihre Fähigkeit, sich an eine Sache zu erinnern,

wesentlich von ihrem emotionalen Gehalt abhängt. Sie erinnern sich an das, was Sie bewegt.

Sie erinnern sich, wenn Sie etwas fühlen. Nein, wir erzählen keine herzzerreißenden Geschichten über

einen Jungen und seinen Hund. Was wir erzählen, ruft Überraschungs-, Neugier-, Spaß- und Was-soll-das?-

Emotionen hervor und dieses Hochgefühl, das Sie beim Lösen eines Puzzles empfinden oder wenn Sie

etwas lernen, was alle anderen schwierig finden. Oder wenn Sie merken, dass Sie etwas können, was

dieser »Ich-bin-ein-besserer-Techniker-als-du«-Typ aus der Technikabteilung nicht kann.

Wir stellen uns unseren Leser als einen aktiv Lernenden vor.

Page 21: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xxi

Wenn Sie wirklich lernen möchten, und zwar schneller und nachhaltiger, dann schenken Sie Ihrer Aufmerksamkeit Aufmerksamkeit. Denken Sie darüber nach, wie Sie denken. Lernen Sie, wie Sie lernen.

Die meisten von uns haben in ihrer Jugend keine Kurse in Metakognition oder Lernthe­orie gehabt. Es wurde von uns erwartet, dass wir lernen, aber nur selten wurde uns auch beigebracht, wie man lernt.

Wir nehmen aber an, dass Sie wirklich lernen möchten, wie man in Java Webanwendun­gen aufbaut, und das SCWCD-Zertifikat erwerben möchten, wenn Sie dieses Buch in den Händen halten. Und wahrscheinlich möchten Sie nicht viel Zeit aufwenden. Und Sie wollen sich an das erinnern, was Sie lesen, und es anwenden können. Und deshalb müssen Sie es verstehen. Wenn Sie so viel wie möglich von diesem Buch profitieren wollen, oder von irgendeinem anderen Buch oder einer anderen Lernerfahrung, überneh­men Sie Verantwortung für Ihr Gehirn. Ihr Gehirn im Zusammenhang mit diesem Lernstoff.

Der Trick besteht darin, Ihr Gehirn dazu zu bringen, neuen Lernstoff als etwas wirklich Wichtiges anzusehen. Als entscheidend für Ihr Wohl­befinden. So wichtig wie ein Tiger. Andernfalls stecken Sie in einem dauernden Kampf, in dem Ihr Gehirn sein Bestes gibt, um die neuen Inhalte davon abzuhalten, hängen zu bleiben.

Metakognition: Nachdenken übers Denken

Wie könnte ich mein Gehirn

wohl dazu kriegen, diesen Kram zu

behalten ...

Wie BringEn Sie also ihr gehirn dazu, Servlets für so wichtig zu halten wie einen Tiger?

Da gibt es den langsamen, ermüdenden Weg und den schnelleren, effektiveren Weg. Der langsame Weg geht über bloße Wiederholung. Natürlich ist Ihnen klar, dass Sie lernen und sich sogar an die langweiligsten Themen erinnern können, wenn Sie sich dieselbe Sache immer wieder einhämmern. Wenn Sie nur oft genug wiederholen, sagt Ihr Gehirn: »Er hat zwar nicht das Gefühl, dass das wichtig ist, aber er sieht sich dieselbe Sache immer und immer wieder an – dann muss sie wohl wichtig sein.«

Der schnellere Weg besteht darin, alles zu tun, was die Gehirnaktivität erhöht, vor allem verschiedene Arten von Gehirnaktivität. Eine wichtige Rolle dabei spielen die auf der vorhergehenden Seite erwähnten Dinge – alles Dinge, die nachweislich helfen, dass Ihr Gehirn für Sie arbeitet. So hat sich z.B. in Untersuchungen gezeigt: Wenn Wörter in den Abbildungen stehen, die sie beschreiben (und nicht irgendwo anders auf der Seite, z.B. in einer Bildunterschrift oder im Text), versucht Ihr Gehirn herauszufinden, wie die Wörter und das Bild zusammenhängen, und dadurch feuern mehr Neuronen. Und je mehr Neuronen feuern, umso größer ist die Chance, dass Ihr Gehirn mitbekommt: Bei dieser Sache lohnt es sich aufzupassen und vielleicht auch, sich daran zu erinnern.

Ein lockerer Sprachstil hilft, denn Menschen tendieren zu höherer Aufmerksamkeit, wenn ihnen bewusst ist, dass sie ein Gespräch führen – man erwartet dann ja von ihnen, dass sie dem Gespräch folgen und sich beteiligen. Das Erstaunliche daran ist: Es ist Ihrem Gehirn ziemlich egal, dass die »Unterhaltung« zwischen Ihnen und einem Buch stattfindet! Wenn der Schreibstil dagegen formal und trocken ist, hat Ihr Gehirn den gleichen Eindruck wie bei einem Vortrag, bei dem in einem Raum passive Zuhörer sitzen: Nicht nötig, wach zu bleiben.

Aber Abbildungen und ein lockerer Sprachstil sind erst der Anfang.

Page 22: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xxii Einführung

Spielen Sie Container

Punkt für Punkt

Wie man dieses Buch benutzt

Das haben WIR getan:Wir haben Bilder verwendet, weil Ihr Gehirn auf visuelle Eindrücke eingestellt ist, nicht auf Text. Soweit es Ihr Gehirn betrifft, sagt ein Bild wirklich mehr als 1.024 Worte. Und dort, wo Text und Ab­bildungen zusammenwirken, haben wir den Text in die Bilder eingebettet, denn Ihr Gehirn arbeitet besser, wenn der Text innerhalb der Sache steht, auf die er sich bezieht, und nicht in einer Bildunter­schrift oder irgendwo vergraben im Text.

Wir haben Redundanz eingesetzt, d.h. dasselbe auf unterschiedliche Art und mit verschiedenen Me­dientypen ausgedrückt, damit Sie es über mehrere Sinne aufnehmen. Das erhöht die Chance, dass die Inhalte an mehr als nur einer Stelle in Ihrem Gehirn verankert werden.

Wir haben Konzepte und Bilder in unerwarteter Weise eingesetzt, weil Ihr Gehirn auf Neuigkeiten programmiert ist. Und wir haben Bilder und Ideen mit zumindest etwas emotionalem Charakter verwendet, weil Ihr Gehirn darauf eingestellt ist, auf die Biochemie von Gefühlen zu achten. An alles, was ein Gefühl in Ihnen auslöst, können Sie sich mit höherer Wahrscheinlichkeit erinnern, selbst wenn dieses Gefühl nicht mehr ist als ein bisschen Belustigung, Überraschung oder Interesse.

Wir haben einen umgangssprachlichen Stil mit direkter Anrede benutzt, denn Ihr Gehirn ist von Natur aus aufmerksamer, wenn es Sie in einer Unterhaltung wähnt, als wenn es davon ausgeht, dass Sie passiv einer Präsentation zuhören – sogar dann, wenn Sie lesen.

Wir haben mehr als 40 Aktivitäten für Sie vorgesehen, denn Ihr Gehirn lernt und behält von Natur aus besser, wenn Sie Dinge tun, als wenn Sie nur darüber lesen. Und wir haben die Übungen zwar anspruchsvoll, aber doch lösbar gemacht, denn so ist es den meisten Lesern am liebsten.

Wir haben mehrere unterschiedliche Lernstile eingesetzt, denn vielleicht bevorzugen Sie ein Schritt­für­Schritt­Vorgehen, während jemand anders erst einmal den groben Zusammenhang verstehen und ein Dritter einfach nur ein Codebeispiel sehen möchte. Aber ganz abgesehen von den jeweiligen Lernvorlieben profitiert jeder davon, wenn er dieselben Inhalte in unterschiedlicher Form präsentiert bekommt.

Wir liefern Inhalte für beide Seiten Ihres Gehirns, denn je mehr von Ihrem Gehirn Sie einsetzen, desto wahrscheinlicher werden Sie lernen und behalten, und umso länger bleiben Sie konzen triert. Wenn Sie mit einer Seite des Gehirns arbeiten, bedeutet das häufig, dass sich die andere Seite ausru­hen kann; so können Sie über einen längeren Zeitraum produktiver lernen.

Und wir haben Geschichten und Übungen aufgenommen, die mehr als einen Blickwinkel repräsentieren, denn Ihr Gehirn lernt von Natur aus intensiver, wenn es gezwungen ist, selbst zu analysieren und zu beurteilen.

Wir haben Herausforderungen eingefügt: in Form von Übungen und indem wir Fragen stel­len, auf die es nicht immer eine eindeutige Antwort gibt, denn Ihr Gehirn ist darauf eingestellt, zu lernen und sich zu erinnern, wenn es an etwas arbeiten muss. Überlegen Sie: Ihren Körper bekommen Sie ja auch nicht in Form, wenn Sie nur die Leute auf dem Sportplatz beobachten. Aber wir haben unser Bestes getan, um dafür zu sorgen, dass Sie – wenn Sie schon hart arbeiten – an den richtigen Dingen arbeiten. Dass Sie nicht einen einzigen Dendriten darauf verschwenden, ein schwer verständliches Beispiel zu verarbeiten oder einen schwierigen, mit Fachbegriffen gespickten oder übermäßig gedrängten Text zu analysieren.

Wir haben Menschen eingesetzt. In Geschichten, Beispielen, Bildern usw. – denn Sie sind ein Mensch. Und Ihr Gehirn schenkt Menschen mehr Aufmerksamkeit als Dingen.

Wir haben einen 80/20­Ansatz benutzt. Wir gehen davon aus, dass das hier nicht Ihr einziges Buch sein wird, wenn Sie Ihre Diss über JSPs schreiben wollen. Deshalb besprechen wir nicht alles. Nur das, was Sie wirklich brauchen werden.

Kein Schon- kaffee

Kein Schon-kaffee

Gy

mn

astik für den Ge

ist

View

Controller

AlteDatenbank

DB

Kunde-Bean

Service

Kunden verwalten

Anfrage1c

1a

3b

2a

3a

1b

4a

4b

4c

Kims Reich

Rosis Garten

Webdesigner lungern hier rum ...

Entity

Model

Model

Page 23: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xxiii

Machen Sie den »Kein Schonkaffee«- Abschlusstest erst, nACHDEM Sie das Buch vollständig durchgearbeitet haben.

Machen Sie den Test zu früh, werden Sie kein klares Bild darüber erhalten, wie bereit Sie für die echte Prüfung sind. Warten Sie, bis Sie den Eindruck haben, dass Sie fast so weit sind, und gehen Sie dann erst den Test an. Und achten Sie darauf, dass Sie sich tatsächlich nur 180 Minuten geben – genau so viel Zeit werden Sie auch in der echten SCWCD-Prüfung haben.

So, wir haben unseren Teil der Arbeit geleistet. Der Rest liegt bei Ihnen. Diese Tipps sind ein Anfang; hören Sie

auf Ihr Gehirn und finden Sie heraus, was bei Ihnen funktioniert und was nicht.

Probieren Sie neue Wege aus.

Und das können SIE tun, um sich Ihr Gehirn Untertan zu machen

1 immer langsam. Je mehr Sie verstehen, desto weniger müssen Sie auswendig lernen.Lesen Sie nicht nur. Halten Sie inne und denken Sie nach. Wenn das Buch Sie etwas fragt, springen Sie nicht einfach zur Antwort. Stellen Sie sich vor, dass Sie das wirklich jemand fragt. Je gründlicher Sie Ihr Gehirn zum Nachdenken zwingen, umso größer ist die Chance, dass Sie lernen und behalten.

2 Bearbeiten Sie die Übungen. Machen Sie selbst notizen.

Wir haben sie entworfen, aber wenn wir sie auch für Sie lösen würden, wäre das, als ob jemand an­deres Ihr Training für Sie absolviert. Und sehen Sie sich die Übungen nicht einfach nur an. Benutzen Sie einen Bleistift. Es deutet Vieles darauf hin, dass körperliche Aktivität beim Lernen den Lernerfolg erhöhen kann.

3 Lesen Sie die Abschnitte »Es gibt keine dummen Fragen«.

Und zwar alle. Das sind keine Zusatzanmerkungen – sie gehören zum Kerninhalt! Überspringen Sie sie nicht.

4 Lesen Sie dieses Buch als Letztes vor dem Schlafengehen. Oder lesen Sie danach zu-mindest nichts Anspruchsvolles mehr.

Ein Teil des Lernprozesses (vor allem die Übertra­gung in das Langzeitgedächtnis) findet erst statt, nach-dem Sie das Buch zur Seite gelegt haben. Ihr Gehirn braucht Zeit für sich, um weitere Verarbeitung zu leisten. Wenn Sie in dieser Zeit etwas Neues aufneh­men, geht ein Teil dessen, was Sie gerade gelernt haben, verloren.

5 Trinken Sie Wasser. Viel.Ihr Gehirn arbeitet am besten in einem schönen Flüs­sigkeitsbad. Austrocknung (zu der es schon kommen kann, bevor Sie überhaupt Durst verspüren) beein­trächtigt die kognitiven Funktionen.

6 reden Sie drüber. Laut.Sprechen aktiviert einen anderen Teil des Ge­hirns. Wenn Sie etwas verstehen wollen oder Ihre Chancen verbessern wollen, sich später daran zu erinnern, sagen Sie es laut. Noch besser: Versu­chen Sie es jemand anderem laut zu erklären. Sie lernen dann schneller und haben vielleicht Ideen, auf die Sie beim bloßen Lesen nie gekommen wären.

7 Hören Sie auf ihr gehirn.

Achten Sie darauf, Ihr Gehirn nicht zu überladen. Wenn Sie merken, dass Sie etwas nur noch überflie­gen oder dass Sie das gerade erst Gelesene ver­gessen haben, ist es Zeit für eine Pause. Ab einem bestimmten Punkt lernen Sie nicht mehr schneller, indem Sie mehr hineinzustopfen versuchen; das kann sogar den Lernprozess stören.

9

Schneiden Sie das hier aus und heften Sie es an Ihren Kühlschrank.

8 Aber bitte mit gefühl!

Ihr Gehirn muss wissen, dass es um etwas Wichtiges geht. Lassen Sie sich in die Geschichten hineinzie­hen. Erfinden Sie eigene Bildunterschriften für die Fotos. Über einen schlechten Scherz zu stöhnen ist immer noch besser, als gar nichts zu fühlen.

Page 24: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Einführung

Außer Ihrem Gehirn und einem Stift brauchen Sie Java, Tomcat 5 und einen Computer.

Sie benötigen keine weiteren Entwicklungswerkzeuge wie eine IDE (Integrated Development Environment). Wir empfehlen Ihnen dringend, nur einen einfachen Texteditor zu verwenden, bis Sie dieses Buch durchhaben. Eine IDE mit Servlet/JSP-Unterstützung kann Sie vor einigen Details schützen, die wirklich wichtig sind (und geprüft werden). Sie sind also erheblich besser bedient, wenn Sie den Bean-Code vollständig von Hand schreiben. Haben Sie einmal verstanden, was passiert, können Sie zu einem Werkzeug greifen, das einige der Schritte zu Erstellung und Deployment von Servlets/JSPs automatisiert. Wenn Sie bereits wissen, wie man mit Ant arbeitet, können sie nach Kapitel 3 damit beginnen, es zum Deployment einzusetzen. Aber wir raten von der Verwendung von Ant ab, bis Sie sich die Deployment-Struktur für Webanwendungen vollständig eingeprägt haben.

Was Sie für dieses Buch brauchen:

TOMCAT EINRICHTEN� Sollten Sie Java SE v1.5 oder höher noch nicht haben, müssen Sie es sich beschaffen.

� Sollten Sie Tomcat 5 noch nicht haben, erhalten Sie ihn unter http://tomcat.apache.org/. Wählen Sie im Downloads-Menü auf der linken Seite der Homepage »Tomcat v5.5«.

� Gehen Sie zum Abschnitt »Binary Distributions« und laden Sie die Version Ihrer Wahl herunter. Wenn Sie nicht wissen, was Sie nehmen sollen, wählen Sie die »Core«-Distri-bution. Mehr brauchen Sie nicht.

� Speichern Sie die Installationsdatei in einem temporären Verzeichnis.

� Installieren Sie Tomcat. Unter Windows müssen Sie dazu nur auf die Datei install.exe doppelklicken und den Anweisungen des Assistenten folgen. Auf anderen Systemen müs-sen Sie die Installationsdatei an dem Ort Ihrer Festplatte entpacken, an dem sich Tomcat befinden soll.

� Damit Sie die Anweisungen in diesem Buch leichter befolgen können, sollten Sie dem Tomcat-Home-Verzeichnis den Namen »tomcat« geben (oder einen »tomcat«-Alias auf das eigentliche Tomcat-Home-Verzeichnis erstellen).

� Setzen Sie Umgebungsvariablen für JAVA_HOME und TOMCAT_HOME auf die Weise, auf die das bei Ihrem System üblich ist.

� Sie sollten über ein Exemplar der Spezifikationen verfügen, auch wenn Sie diese nicht benötigen, um die Prüfung zu bestehen. Derzeit finden Sie sie unter Servlet 2.4 (JSR #154) http://jcp.org/en/jsr/detail?id=154 JSP 2.0 (JSR #152) http://jcp.org/en/jsr/detail?id=152 JSTL 1.1 (JSR #52) http://jcp.org/en/jsr/detail?id=52

Gehen Sie zur JSR-Seite und klicken Sie neben Final Release auf Download Page.

� Testen Sie Tomcat, indem Sie unter Linux/Unix/OS X das the tomcat/bin/startup-Skript (startup.sh) starten. Gehen Sie mit Ihrem Browser zu http://localhost:8080/, sollten Sie die Tomcat-Startseite sehen.

Wie man dieses Buch benutzt

Java 2 Standard Edition 1.5

Tomcat 5

Die Prüfung umfasst die folgenden Spezifikationen:

� Servlets 2.4

� JSP 2.0

� JSTL 1.1

xxiv

Page 25: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xxv

Dies ist ein Lehrbuch, keine Referenz. Wir haben mit Absicht alles weggelassen, was Ihnen dabei in die Quere kommen könnte, das zu lernen, was wir am jeweiligen Punkt des Buchs behandeln. Beim ersten Lesen sollten Sie unbedingt auch am Anfang des Buchs beginnen. Das Buch geht zu jedem Zeitpunkt davon aus, dass Sie bestimmte Dinge bereits gesehen und gelernt haben.

Wir nutzen einfache UML-ähnliche Diagramme.

Wahrscheinlich kennen Sie UML bereits, aber in der Prüfung kommt es nicht vor, und es ist auch keine Voraussetzung für dieses Buch. Sie müssen sich also nicht den Kopf darüber zerbrechen, dass Sie jetzt gleichzeitig Servlets, JSP, JSTL und UML lernen müssen.

Wir behandeln nicht alle kleinlichen Einzelheiten aus der Spezifikation.

Die Prüfung ist ziemlich ausführlich. Deswegen sind wir es auch. Aber wenn die Spezifika-tion Details enthält, die in der Prüfung nicht auftauchen, erwähnen wir sie nur, wenn sie für die meisten Webentwickler interessant sind. Das, was Sie wissen müssen, um mit der Entwicklung von Webkomponenten (Servlets und JSPs) zu beginnen, und das, was Sie zum Bestehen der Prüfung benötigen, überschneidet sich zu rund 85%. Wir behandeln ein paar Dinge, die in der Prüfung nicht auftauchen. Wenn wir das tun, weisen wir darauf hin, damit Sie wissen, dass Sie sich das nicht merken müssen. Wir haben die echte Prüfung geschrieben. Wir wissen also, worauf Sie sich konzentrieren müssen! Wenn ein winziges Detail eventuell in einer der Fragen der Prüfung auftauchen könnte, der erforderliche Lernaufwand aber in keinem Verhältnis zum Ertrag steht, überspringen wir es oder behandeln es nur am Rande oder nur in einer Frage eines Übungstests.

Die Aktivitäten sind niCHT optional.

Die Übungen und Aktivitäten sind kein Beiwerk. Sie sind ein wesentlicher Bestandteil des Buchs. Einige von ihnen sollen Ihnen beim Merken helfen, andere beim Verstehen, und einige helfen Ihnen, das Gelernte anzuwenden. Überspringen Sie nichts.

Die redundanz ist beabsichtigt und wichtig.

Eins der Dinge, die bei einem Kopf bis Fuß-Buch grundlegend anders sind, ist, dass wir möchten, dass Sie die Sache wirklich verstehen. Und wir möchten, dass Sie nach Beendigung des Buches behalten, was Sie gelernt haben. Einprägen und Erinnern sind bei den meisten Lehr- oder Referenzbüchern nicht unbedingt das erste Ziel – in diesem Buch schon. Deswegen werden Ihnen in diesem Buch einige Konzepte mehrfach begegnen.

Die Codebeispiele sind so schlank wie möglich.

Unsere Leser sagen uns, dass sie es frustrierend finden, sich durch 200 Zeilen Code graben zu müssen, um die beiden Zeilen zu finden, die sie wirklich verstehen müssen. Die meisten Beispiele in diesem Buch werden mit so wenig Kontext wie möglich gezeigt, damit der Teil, den Sie lernen soll, klar und einfach ist. Sie dürfen nicht erwarten, dass der Code robust oder gar vollständig ist. Das ist unser Auftrag für Sie, wenn Sie mit dem Buch durch sind. Die Beispiele in diesem Buch wurden spezifisch für Lehrzwecke geschrieben und sind nicht immer vollständig arbeitsfähig. Gelegentlich machen wir Codebeispiele auf wickedlysmart.com verfügbar.

Was Sie sonst noch wissen sollten

Regisseur

getFilme()getOscars()getKevinBaconWert()

Wir nutzen einfa-

cheres, angepasstes

Schein-UML.

Page 26: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xxvi Einführung

Muss ich zunächst das SCJP bestehen?

Ja. Die Zertifizierungen Web Component Developer, Business Component Developer, Mobile Application Developer, Web Services Developer und Developer verlangen alle, dass Sie ein Sun Certified Java Pro-grammer sind.

Wie viele Fragen?

In der Prüfung müssen Sie 69 Fragen beantworten. Es erhalten aber nicht alle dieselben 69 Fragen. Es gibt viele verschiedene Versionen des Tests. Aber jeder erhält den gleichen Schwierigkeitsgrad und die gleiche Verteilung der Themen. Sie dürfen davon ausgeben, dass in der echten Prüfung mindestens eine Frage zu jeder Zertifikatsanforderung auftaucht, und zu einigen Anforderungen mehr als nur eine Frage.

Wie viel Zeit habe ich in der Prüfung?

Sie haben drei Stunden (180 Minuten). Für die meisten ist das kein Problem, da diese Fragen keine langen komplizierten Puzzles darstellen. Die meisten Fragen sind sehr kurz und müssen im Multiple-Choice-Ver-fahren beantwortet werden. Entweder Sie wissen die Antwort, oder Sie wissen sie nicht.

Wie sehen die Fragen aus?

Sie sehen fast genauso aus wie die Fragen in den Übungstests. Es gibt allerdings einen großen Unter-schied – in der echten Prüfung wird angegeben, wie viele Antworten richtig sind. Das machen wir nicht. Außerdem werden Ihnen einige Drag-and-Drop-Fragen begegnen, die wir hier nicht darstellen können. Aber Drag-and-Drop-Fragen sind ja nur eine interaktive Form der Zuordnung.

Wie viele Fragen muss ich richtig beantworten?

Sie müssen 49 Fragen (70%) richtig beantworten, um die Prüfung zu bestehen. Halten Sie Ihren Mauszei-ger über den Fertig-Button, nachdem Sie alle Fragen beantwortet haben, bis Sie den Mut finden, darauf zu klicken. Denn dann erfahren Sie blitzschnell, ob Sie bestanden haben (natürlich werden Sie bestehen).

Warum sagen die Übungstests in diesem Buch nicht, wie viele Optionen man für die richtige Antwort wählen muss?

Unsere Tests sollen einen Hauch schwerer sein als der echte Test, damit Sie realistisch einschätzen können, ob Sie bereit sind, die Prüfung abzulegen. Man neigt dazu, in Übungstests in Büchern bessere Ergebnisse zu erzielen, weil man einige Tests mehrfach macht. Wir möchten vermeiden, dass Sie fälschlich den Ein-druck haben, bereit für die Prüfung zu sein. Unsere Leser haben uns mitgeteilt, dass ihre Ergebnisse in der echten Prüfung ihrem Ergebnis beim Abschluss-Übungstest aus diesem Buch sehr ähnlich sind.

Zur SCWCD-Prüfung (für Java EE 1.5)

Die Prüfung ablegen

Das aktualisierte SCWCD-Zertifikat trägt den Namen »Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5« (CX-310-083). Lassen Sie sich von diesem Namen nicht verwirren. Das aktualisierte Zertifikat wurde immer noch für Java EE v1.4 und die Servlet v2.4- und JSP v2.0-Spezifikationen entworfen.

Page 27: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xxvii

Kann ich die Prüfung auf deutsch ablegen?

Leider nicht. Es war uns daher wichtig, dass Sie zwar alle Konzepte und wichtigen Begriffe einmal auf deutsch richtig verstehen, dass Sie aber genauso die englische Fachterminologie kennenlernen, dem Code zuordnen können und in der Prüfung leicht wiedererkennen. Das Bild der Anfrage eines Clients und der Antwort eines Servers sollte Ihnen am Ende also genauso vertraut sein wie die Begriffe HTTP-Request und -Response.

Was erhalte ich, nachdem ich die Prüfung abgelegt habe?

Achten Sie darauf, dass Sie Ihren Prüfungsbericht erhalten, bevor Sie das Testzentrum verlassen. Er enthält eine Zusammenfassung Ihrer Ergebnisse in den verschiedenen Bereichen und sagt, ob Sie bestanden haben oder nicht. Bewahren Sie ihn auf ! Es ist Ihr anfänglicher Nachweis der Zertifizierung. Ein paar Wochen nach dem Test werden Sie ein kleines Päckchen von den Sun Educational Services erhalten, in dem sich Ihr echtes gedrucktes Zertifikat, ein Glück-wunschschreiben von Sun und eine niedliche Anstecknadel befinden, auf der Sun Certified Web Component Devel-oper steht – so klein geschrieben allerdings, dass Sie behaupten könnten, in allem zertifiziert zu sein, was Ihnen gefällt, ohne dass jemand entziffern könnte, ob Sie die Wahrheit sagen. Der Schampus, der Ihnen nach Bestehen der Prüfung zusteht, ist leider nicht enthalten.

Wie viel kostet es und wie registriere ich mich?

Die Prüfung kostet 235 €. Deswegen brauchen Sie ja dieses Buch ... um sicherzustellen, dass Sie beim ersten Mal beste-hen. Sie registrieren sich über die Sun Educational Services, indem Sie Ihre Kreditkartennummer angeben. Im Aus-tausch erhalten Sie eine Voucher-Nummer, mit der Sie beim nächsten Prometric-Testcenter einen Termin vereinbaren.

Bei http://www.de.sun.com/ finden Sie ausführliche Informationen und können Ihren Voucher erwerben. Ins Zertifizierungszentrum gelangen Sie über SCHULUNGEN -> ZERTIFIZIERUNG.

Wie sieht die Prüfungssoftware aus?

Die ist absolut simpel — Sie erhalten eine Frage und beantworten sie. Möchten Sie die Frage nicht beantworten, können Sie sie auslassen und später wieder zu ihr zurückkehren. Beantworten Sie die Frage, sind sich aber nicht sicher, und möchten später zu ihr zurückkehren, wenn Sie mehr Zeit haben, können Sie eine Frage »markieren«. Wenn Sie fertig sind, sehen Sie ein Fenster mit allen Fragen, die Sie noch nicht beantwortet oder markiert haben, und können darüber zu ihnen zurückkehren.

Zu Anfang der Prüfung bekommen Sie eine kleine Einführung zur Verwendung der Software, in der Sie einen kleinen Übungstest erhalten (nicht zu Servlets). Die Zeit, die Sie mit der Einführung verbringen, wird nicht auf Ihre Zeit für die SCWCD-Prüfung angerechnet. Die Uhr beginnt erst zu laufen, wenn Sie die Software-Einführung beendet haben und für den echten Test bereit sind.

Wo kann ich eine Lerngruppe finden und wie lange dauert die Vorbereitung?

Die beste Online-Forumsgruppe zu dieser Prüfung ist zufälligerweise die, die die Autoren dieses Buchs moderieren! (Wow, kaum zu glauben, oder?) Steigen Sie bei javaranch.com ab und betreten Sie den Big Moose Saloon (dort befinden sich alle Diskussionsforen). Er ist unübersehbar. Es ist immer jemand da, der Ihre Fragen beantwortet, manchmal auch wir. JavaRanch ist die freundlichste Java-Community im ganzen Internet, in der Sie immer willkommen sind, egal, auf welchem Level Ihr Java steht. Sollten Sie noch das SCJP ablegen müssen, können wir Ihnen auch damit helfen.

Wie lange Sie benötigen, bis Sie für die Prüfung bereit sind, ist in großem Maße davon abhängig, wie viel Servlet- und JSP-Erfahrung Sie bereits haben. Wenn Sie Servlet- und JSP-Neuling sind, könnten Sie sechs bis zwölf Wochen brauchen, je nachdem wie viel Zeit Sie täglich aufbringen können. Personen, die eine Menge aktuelle Erfahrung mit Servlets und JSPs haben, sind häufig bereits in gerade mal drei Wochen für die Prüfung bereit.

Page 28: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xxviii Einführung

Betatester & technische Gutachter

Das Gutachterteam

Dave Wood

Joe Konior

Philippe Maquet Johannes deJong

Jef Cumps

Andrew Monkhouse

Jason Menard

Dirk Schreckmann

Zwei neue graue Haare, für die dieses Buch ver-antwort-lich ist.

Sergio Ramirez

Nicht mit Bild vertreten, aber genauso toll: Amit Londhe

Theodore Casser

Oliver Roell

Ulf Dittmer

Bear Bibeault

Preetish Madalia

Neeraj Singhal

Collins Tchoumba

Page 29: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

Die Einführung

Sie sind hier� xxix

Bei O’Reilly:

Unser größter Dank gilt Mike Loukides bei O’Reilly, der alles angestoßen und geholfen hat, das »Von Kopf bis Fuß«-Konzept zu einer Reihe zu formen. Wir freuen uns, einen Lektor zu haben, der ein richtiger Java-Typ ist. Großen Dank auch an die treibende Kraft hinter Von Kopf bis Fuß, Tim O’Reilly. Zu unserem Glück denkt er immer an die Zukunft und übt mit Vergnügen seinen erfrischenden Einfluss aus. Dank auch an die clevere »Mutter« der Von Kopf bis Fuß-Reihe Kyle Hart, die ausgeknobelt hat, wie Von Kopf bis Fuß in die restliche Computerbuch-Welt passt.

Unsere unerschütterlichen Gutachter:

Na gut, das Buch brauchte etwas länger, als wir ursprünglich geplant hatten. Aber ohne den JavaRanch-Review-Manager Johannes deJong wäre es erschreckend spät geworden. Du bis unser Held, Johannes. Unseren besonderen Dank auch an Joe Konior, dessen Feedback zu jedem Kapitel so ungefähr den gleichen Umfang hatte wie das Kapitel selbst. Höchst dankbar sind wir für die unnachgiebige Anstrengung und Expertise (und gute Laune) von Philippe Macquet. Alle drei Autoren lieben ihn so sehr, dass sie ihn vom Fleck weg heiraten würden ... was allerdings schon recht seltsam wäre. Wir sind Andrew Monkhouse sowohl für sein technisches Feedback als auch die Hilfe mit den komplizierten Englisch-Australisch-Übersetzungen dankbar. Jef Cumps, deine MP3-Wiedergabe des »setHeader«-Songs war umwerfend (vielleicht nur etwas zu Emo), und deine technischen Kommentare waren wirklich hilfreich.

Dave Wood hat beinahe alle Aspekte abgeklopft und mit Vergnügen bei frühen Entwürfen darauf hingewiesen, »Das ist aber nicht sehr Von Kopf bis Fuß-mäßig.« Exzellentes Feedback haben wir auch von den JavaRanch-Moderatoren Jason Menard, Dirk »Fischgesicht« Schreckmann, Rob Ross, Ernest Friedman-Hill und Thomas Paul erhalten. Und unser besonderer Dank geht wie immer an den javaranch.com-Trail-Boss Paul Wheaton.

Übungsfragen

Wenn Ihr Kopf bei einer besonders verzwickten oder vertrackten JSP-Übungs-frage zu qualmen beginnt, dürfen Sie nicht uns verantwortlich machen – wen-den Sie sich an Marc Peabody! Danke, Marc, dass du uns geholfen hast, die SCWCD-Kandidaten auf Trab zu halten. Marc verbringt großzügige Mengen seiner Freizeit mit dem Moderieren auf JavaRanch. Er ist dafür berüchtigt, Rancher dazu zu animieren, entsetzliche Mashups aus unschuldigen Java EE-Technologie n zu konstruieren.

Weitere Schuldige:

Mithelfer

Marc Peabody

Page 30: Ein Buch zum Mitmachen und Verstehen Servlets JSP · Hibernate: A Developer’s Notebook Java™ 1.5 Tiger: A Developer’s Notebook Java™ Kochbuch Java™ in a Nutshell Java™

xxx Einführung

Noch mehr Danksagungen

*Die große Zahl der Danksagungen verdankt sich dem Umstand, dass wir die Theorie testen, dass jeder, der in einem Buch erwähnt wird, mindestens ein Exemplar kauft, vielleicht sogar mehrere (die Familie muss schließlich auch versorgt werden). Falls Sie sich einen Platz in der Danksagungsliste unseres nächsten Buches sichern möchten und eine große Familie haben, schreiben Sie uns einfach.

1Klarstellung: Bryan ist der einzige Koautor, den wir je hatten. Aber das mindert die Aussage in keiner Weise.

Noch mehr Personen*

Von Bryan BashamIch könnte damit anfangen, meiner Mama zu danken. Aber das habe ich schon mal gemacht ... Meine Kenntnisse in der Java-Webentwicklung basieren auf einigen mittel-großen Anwendungen, die ich geschrieben habe. Aber diese Grundlage wurde durch Jahre von Diskussionen auf einen Sun-internen Java-Instruktoren-E-Mail-Alias gestärkt und verfeinert. Insbesondere möchte ich Steve Stelting, Victor Peters, Lisa Morris, Jean Tordella, Michael Judd, Evan Troyka und Keith Ratliff danken. Viele Menschen haben mein Wissen zugeschnitten, aber diese sechs sind die Messer, die die tiefsten Kerben hinterlassen haben.

Wie bei allen Buchprojekten waren die letzten drei Monate recht schwierig. Ich danke meiner Verlobten Kathy Collina für Ihre Geduld mit mir. Karma und Kiwi (unseren Katzen) möchte ich für mitternächtliches Schoßsitzen und das regelmäßige Verprügeln der Tastatur danken.

Abschließend und am meisten muss ich Kathy und Bert danken, dass Sie überhaupt vorgeschlagen haben, dass wir uns an dieses Projekt machen sollen. Ihre Kenntnisse der Metakognition und Lehrgestaltung werden nur von der kreativen Kraft in den Schatten gestellt, die aus ihren Von Kopf bis Fuß-Büchern strömt. Ich arbeite mittlerweile seit fünf Jahren in der Lehre, und fast alles, was ich weiß, habe ich von Kathy gelernt ... Und machen Sie sich keine Gedanken wegen meiner Mutter. Sie wird in meinem nächsten Von Kopf bis Fuß-Buch eine dicke Widmung erhalten. Ich liebe dich, Mama!

Von Kathy und BertHui, war das schmierig, Bryan. (Nicht dass Kathy Schmeicheleien nicht gefallen wür-den.) Was deine Verlobte betrifft, hast du natürlich recht. Aber wirklich vermisst kann sie dich kaum haben, wo sie doch den ganzen Sommer unterwegs war und Ultimate gespielt hat, während wir wie die Bienen an unseren Powerbooks gearbeitet haben. Aber du hast das zu einer sehr lohnenden Erfahrung gemacht und bist mit Sicherheit der beste Koau-tor,1 den wir je hatten! Schon fast erschreckend, wie ruhig und zufrieden du jederzeit bist.

Alle gemeinsam danken wir dem fleißigen Zertifizierungsteam bei Sun, insbesondere der Zertifizierungsmanagerin für Java, Evelyn Cartagena, und alle den Menschen, die dabei mitgeholfen haben, die JSRs für die Servlet- und JSP-Spezifikationen zu entwickeln.