James Turner Kevin Bedell Übersetzung: Judith Muhr Struts JSP-Applikationen mit Jakarta Struts, JBoss und Apache Axis ADDISON-WESLEY An imprint of Pearson Education München Boston San Francisco Harlow, England Don Mills, Ontario Sydney Mexico City Madrid Amsterdam
E Einführung 11 E.1 Wer dieses Buch lesen sollte 11 E.2 Welche Voraussetzungen sollten Sie mitbringen? 12 E.3 Welche Technologien werden besprochen? 12 E.4 Wichtige Werkzeuge 13 E.5 Der Aufbau dieses Buches 14 E.6 Die Website zum Buch 15 E.7 Konventionen in diesem Buch 15 1 Struts und sein Umfeld 17 1.1 Die Parabel vom Zimmermann 17 1.2 Was ist Struts? 18 1.3 Struts heute: Wo stehen wir? 22 1.4 Hinter den Kulissen: Die Weiterentwicklung von Struts 24 1.5 Wie geht es weiter? 25 1.6 Fazit 26 2 Das Model-View-Controller-Entwurfsmuster 27 2.1 Das MVC-Muster 27 2.2 Die Ursprünge von Model 1 / Model 2 31 2.3 Wie Struts das Model 2-Muster implementiert 32 2.4 Fazit 36 3 Ihre erste Struts-Applikation 39 3.1 Applikationsanforderungen von Hello World! 39 3.2 Anwendung des Model-View-Controller-Musters 40 3.3 Die View-Komponente: Das HTML-Formular und das Formular-Bean 41 3.4 MessageResources- und Application.properties-Dateien 45 3.5 Das Struts Formular-Bean: HelloForm.java 46 3.6 Datenauswertung und ActionErrors 48 3.7 Die Controller-Komponente: HelloAction.java 50
3.8 Die Model-Komponente (HelloModel.java) 57 3.9 Daten mit Hilfe von Attributen an die View übergeben: Constants.java 59 3.10 Und jetzt das Ganze zusammen: Die Datei struts-config.xml 60 3.11 Fazit 62 4 HTTP-Protokoll: Kommunikation und Steuerung von Webapplikationen 65 4.1 Das HTTP-Protokoll und der Request/Response-Kreislauf 65 4.2 Steuerinformation: HTTP-Header und HTTP-Antwortcodes 69 4.3 HTTP-Cookies und Sitzungs-/Benutzerverwaltung 75 4.4 Fazit 78 5 JSP, Tagiibs und JSTL: Java auf Seiten erweitert 79 5.1 Servlets und JSP 79 5.2 Objektgültigkeitsbereiche mit JSP 84 5.3 Geschäftslogik mit Hilfe von Beans verbergen 88 5.4 Benutzerdefinierte Custom Tags 93 5.5 Verteilung von Webapplikationen 96 5.6 JSTL: Die Standard-Tag-Bibliothek 98 5.7 JSP und J2EE: Das Gesamtbild 100 5.8 J2EE und Struts 102 5.9 Fazit 103 6 Die Beispielapplikation: Ein Finanzportfolio 105 6.1 Anforderungen: Sichern Sie sich ab! 105 6.2 Zuerst die Grundstruktur 106 6.3 Entwicklung von Use Cases 110 6.4 Datenquellen und Speicher 114 6.5 Technologieauswahl 115 6.6 Fazit 122 7 View-Komponenten: Was der Endbenutzer sieht 123 7.1 Das ActionForm 123 7.2 JSP-Dateien: Alpha und Omega 131
7.3 Die Tücken der automatischen Typumwandlung 139 7.4 Das Tag htmkerrors 143 7.5 Internationalisierung 143 7.6 Fazit 146 8 Der Controller: Steuerung der Aktion 147 8.1 Die Klasse Action 147 8.2 Zugriff auf die Sitzung und andere Formular-Beans 152 8.3 Benutzerauthentifizierung und Struts 166 8.4 Übertragung der Steuerung in die und aus der Applikation 167 8.5 Fazit 168 9 Model-Komponenten: Geschäftsmodellierung 169 9.1 Korrekt entworfene Modelle 169 9.2 Weitere Techniken zur Kapselung 173 9.3 Fazit 178 10 Die Datei struts-config.xml: Alle Elemente verknüpfen 181 10.1 Die struts-config DTD 181 10.2 Die Konfigurationsdatei im Kontext 195 10.3 Fazit 195 11 Tag-Libraries: Das Innenleben der View 197 11.1 Überblick über die JSP Tag-Libraries 197 11.2 Die Arbeitsweise der Struts-Tags: Das Tag <bean:page> 198 11.3 Vergleich mit der Java Standard Tag-Library 206 11.4 Fazit 207 12 Struts HTML-Tags: Seitenaufbau und Formularverarbeitung 209 12.1 Struts-Tags, benutzerdefinierte JSP-Tags (Custom Tags) und Java-Skriptlets: eine ausgewogene Mischung 210 12.2 Mit Struts HTML-Tags HTML-Standardelemente darstellen 211 12.3 Grundlagen der Formularverarbeitung 223 12.4 Kontrollkästchen und Optionsfelder 231 12.5 Dropdown-Listen und Auswahl-/Optionslisten 239
; ] 8 Inhaltsverzeichnis 'gi 12.6 Eingabeauswertung und <html:errors> 250 ''% 12.7 Eine Datei mit <html:file> hochladen 258.i- 12.8 Fazit 265 13 Struts Bean-Tags: Daten speichern und übergeben 267 13.1 Struts Bean-Tags, die auf Aspekte des Servlet-Kontexts zugreifen 267 13.2 Struts Bean-Tags, die auf Java-Ressourcen zugreifen 272 13.3 Struts Bean-Tags, die auf Bean-Eigenschaften zugreifen 277 13.4 Fazit 282 14 Struts Logik-Tags für bedingte Anzeigen 283 14.1 Struts Logik-Tags, die abhängig von einem Wert eine bedingte Anzeige erstellen 284 14.2 Struts Logik-Tags, die Teilstrings vergleichen 297 14.3 Die Struts Logik-Tags für die Iteration 299 14.4 Die Struts Logik-Tags für eine Überprüfung auf das Vorhandensein von Werten 302 14.5 Die Struts Logik-Tags zur Übertragung der Steuerung 306 14.6 Fazit 307 15 Nested und Template: Verschachtelte Eigenschaften und Inhalte 309 15.1 Die Struts Nested Tags - Verschachtelte Tags 310 15.2 Die Struts Template-Tags 318 15.3 Fazit 322 16 Die Struts Tiles Tag Library: Master-Dokumentschablonen anlegen 323 16.1 Ein Überblick über Tiles 323 16.2 Tiles aktivieren 324 16.3 Die Definitions-Konfigurationsdatei 324 16.4 JSP-Dateien für Tiles schreiben 326 16.5 Abändern Ihrer Aktionen 328 16.6 Das Gesamtbild 329
16.7 Weitere Aspekte von Tiles 330 16.8 Fazit 330 -s 17 DynaForms und der Validator 331 17.1 DynaForms: Formulare ohne Java 331 17.2 Der Validator: Automatische Feldauswertung 339 17.3 Fazit 352 ~T5*"Struts und Enterprise JavaBeans 353 18.1 EJBs fügen sich in Model-Komponenten ein 353 18.2 Schneller Überblick über die EJB-Technologien 354 18.3 Verschiedene EJB-Typen in Struts einsetzen 356 18.4 Eine Struts/EJB-Beispielapplikation 361 18.5 Fazit 387 19 Struts und Web Services 389 19.1 Web Services fügen sich in Struts-Model-Komponenten ein 390 19.2 Schneller Überblick über die Web Services-Technologien 391 19.3 Struts in Kombination mit einem Web Service verwenden 394 19.4 Eine Struts/Web Service-Beispielapplikation 395 19.5 Fazit 430 20 Struts-Applikationen erstellen, verteilen und testen 431 20.1 Ein integrierter und inkrementeller Build/Test-Zyklus: Extrem(e)! 431 20.2 Struts-Applikationen mit Jakarta Ant erstellen und verteilen 433 20.3 Eine build.xml-datei für Struts-Applikationen mit Ant entwickeln 436 20.4 Extreme Struts-Entwicklung mit integriertem und stetigem Testen 444 20.5 Mock-Objekt-Tests mit JUnit, StrutsTestCase und Ant 446 20.6 In-Container-Tests mit Cactus, JUnit, StrutsTestCase und Ant 456 20.7 Fazit 463
10 Inhaltsverzeichnis A Die CD-ROM zum Buch 465 A.1 Auflistung der Applikationen, die Sie auf der CD-ROM zum Buch finden 465 A.2 Schritt 1: JDK und Tomcat installieren 466 A.3 Schritt 2: MySQL installieren 466 A.4 Die WAR-Dateien in das Tomcat-Verzeichnis webapps kopieren 467 A.5 Tomcat neu starten 468 Stichwortverzeichnis 469