Sie sind hier
E-Book

Struts 2 im Einsatz

AutorChad M Davis, Donald R. Brown, Scott Stanlick
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2008
Seitenanzahl478 Seiten
ISBN9783446417496
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis39,99 EUR

Struts ist ein Open-Source-Framework für die Präsentations- und Steuerungsschicht von Java-Webanwendungen, das weltweit in Tausenden Applikationen eingebunden ist. In der Version 2 verbindet es Apache Struts mit OpenSymphony WebWork und hat dadurch eine noch größere Verbreitung. 

Struts 2 stellt im Vergleich zu Struts 1 eine Revolution in Bezug auf Design und Benutzerfreundlichkeit dar. Es bietet mächtige neue Features an, wie z.B. ein Plug-In-Framework, die Integration von JavaServer Faces und eine Konfiguration ohne XML. Dieses Buch zeigt, wie man mit Struts 2 professionelle, moderne Web-Anwendungen entwickelt. Geschrieben von Don Brown, einem der führenden Entwickler von Struts 2, und zwei erfahrenen Struts-Anwendern stellt dieses Buch alle zentralen Features von Struts 2 leicht verdaulich vor und verwendet dabei zahlreiche Beispiele. Struts 2 im Einsatz liefert exakte Informationen, die sofort im Projekt umgesetzt werden können. Dieses Buch unterstützt Entwickler von Java-Web-Anwendungen bei der Arbeit und beim Umstieg von Struts 1 oder WebWork auf Struts 2.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

6 Die View erstellen – Tags (S. 141-142)
In diesem Kapitel schauen wir uns die Tag-Library von Struts 2 im Detail an. Wir geben eine Referenz für die Tags und leicht verständliche Beispiele für deren Verwendung. Wir beenden hier auch die Ausführungen über die Object-Graph Navigation Language (OGNL). Wir wissen bereits, wie man Formularfelder mit OGNL an Java-Properties bindet, wie sie beispielsweise für unsere Action bereitstehen, um den automatischen Mechanismus für den Datentransfer zu steuern. In Kapitel 5 haben wir OGNL hinsichtlich der Typkonvertierung im Kontext von Daten, die in das Framework gelangen, untersucht.

Nun konzentrieren wir uns auf die Ausdruckssprache (Expression Language, EL) OGNL im Kontext der Daten, die das Framework über die Tag-API von Struts 2 verlassen. Während es im vorigen Kapitel darum ging, wie man eingehende Anfrageparameter auf Java- Properties mappt, die dem ValueStack zur Verfügung stehen, zeigt dieses Kapitel, wie man Daten aus diesen Properties für das Rendern der Result-Seiten einbindet. Wir erforschen die Syntax der Ausdruckssprache OGNL und befassen uns damit, von wo sie Daten einbinden kann. Insbesondere schenken wir dem ValueStack und dem ActionContext besondere Beachtung. Diese Objekte enthalten alle Daten, die für die Verarbeitung einer bestimmten Anfrage (einschließlich des Actionobjekts) wichtig sind. Zwar kann man während des Großteils der Entwicklungsarbeit ihre Existenz fröhlich ignorieren, doch wir sind der Ansicht, dass die Vorteile einfach zu bedeutend sind und man die paar Minuten opfern sollte, um damit vertrauter zu werden.

Doch das wird keinen großen Platz einnehmen, und wir werden das Optimum aus dem Rest des Kapitels herausholen. Nachdem wir diese beiden obskuren Repositories entmystifiziert haben, werden wir im Stil einer Referenz einen Katalog der Tags für den allgemeinen Einsatz in der Tag-API von Struts 2 liefern. Sie können OGNL mit diesen leistungsfähigen neuen Tags nutzen, um diese mit Werten zu füllen. Doch Tags sind eben Tags, und es wird auch nicht lange dauern, sie zu besprechen. Nach den Tags geben wir Ihnen eine knappe Einführung in die fortgeschrittenen Features von OGNL. Am Ende können Sie souverän mit eigenen OGNL-Ausdrücken jonglieren, während Sie auch dichteste Objektgraphen navigieren, um mit diesen Daten Ihre View-Seiten dynamisch zu rendern. Bon appétit!

Zuerst müssen wir uns allerdings einen Moment Zeit nehmen, damit Sie genau verstehen, wo das Framework all die Daten aufbewahrt, auf die Sie von den Tags aus zugreifen möchten. Diese Nutzung global erreichbarer Speicherbereiche ist für Entwickler, die von anderen Frameworks inklusive Struts 1 her kommen, vielleicht nicht so vertraut. Im nächsten Abschnitt kümmern wir uns um diese äußerst wichtige Einführung.

6.1 Auf die Plätze …
Bevor wir über die Details sprechen, wie Sie Daten mit Struts-2-Tags dynamisch in die zu rendernden Seiten leiten, wollen wir zuerst einmal wissen, woher diese Daten eigentlich kommen. Im vorigen Kapitel ging es um die Daten, die in das Framework kommen, und nun konzentrieren wir uns auf deren Weg wieder hinaus. Wenn eine Anfrage im Framework eintrifft, erstellt Struts 2 zuerst einmal Objekte, die all die wichtigen Daten aus der Anfrage speichern können. Was die für die Domäne spezifischen Daten Ihrer Anwendung (das sind ja die, auf die Sie am häufigsten mit Tags zugreifen) angeht – die werden im ValueStack gespeichert.

Inhaltsverzeichnis
Inhalt6
Vorwort14
Danksagungen16
Über dieses Buch20
Teil 1: Struts 2 – Ein brandneues Framework25
1 Struts 2 – Das moderne Framework für Webanwendungen27
1.1 Webanwendungen – Ein kurzer Überblick28
1.1.1 Das Internet zum Erstellen von Anwendungen einsetzen28
1.1.2 Die technologische Basis28
1.1.2.1 Hypertext Transfer Protocol (HTTP)29
1.1.2.2 Die Java-Servlet-API30
1.1.3 Inspektion des Arbeitsbereichs33
1.1.3.1 Bindung von Anfrageparametern und Datenvalidierung33
1.1.3.2 Aufrufe der Businesslogik und der Datenschicht34
1.1.3.3 Rendern der Darstellung und Internationalisierung34
1.2 Frameworks für Webanwendungen35
1.2.1 Was ist ein Framework?35
1.2.1.1 Ein Framework automatisiert häufige Aufgaben35
1.2.1.2 Ein Framework bietet eine Architekturlösung36
1.2.2 Warum man mit einem Framework arbeiten sollte36
1.3 Das Framework von Struts 237
1.3.1 Ein kurzer historischer Abriss37
1.3.2 Struts 2 aus 10.000 Metern Höhe: Das MVC-Muster38
1.3.2.1 Controller – FilterDispatcher39
1.3.2.2 Model – Action40
1.3.2.3 View – Result40
1.3.3 Wie Struts 2 arbeitet41
1.3.3.1 Interceptors42
1.3.3.2 Der ValueStack und OGNL43
1.4 Zusammenfassung45
2 Struts 2 – Der erste Kontakt47
2.1 Deklarative Architektur48
2.1.1 Zwei Arten der Konfiguration48
2.1.1.1 Die Konfiguration des Frameworks selbst48
2.1.1.2 Deklaration der Architektur Ihrer Anwendung48
2.1.2 Zwei Mechanismen zur Deklaration der Architektur49
2.1.2.1 Die XML-basierte deklarative Architektur50
2.1.2.2 Die auf Java-Annotationen basierende deklarative Architektur51
2.1.2.3 Welche Methode sollten Sie nehmen?52
2.1.3 Intelligente Defaults52
2.2 Hello auf die Schnelle53
2.2.1 Deployment der Beispielanwendung53
2.2.1.1 Das Layout einer Struts-2-Webanwendung55
2.2.2 Die HelloWorld-Anwendung58
2.2.2.1 Benutzerleitfaden für HelloWorld58
2.2.2.2 Die Details von HelloWorld59
2.3 HelloWorld mit Annotationen65
2.4 Zusammenfassung68
Teil 2: Zentrale Konzepte: Actions, Interceptors und Typkonvertierungen69
3 Die Arbeit mit Actions71
3.1 Die Actions in Struts 272
3.1.1 Was macht eine Action?72
3.1.1.1 Actions kapseln den Unit of Work72
3.1.1.2 Actions bieten einen Ort für den Datentransfer73
3.1.1.3 Actions geben Control-String fürs Result-Routing zurück74
3.2 Verpacken der Actions74
3.2.1 Das Struts 2 Portfolio75
3.2.2 Die Organisation der Pakete75
3.2.3 Die Arbeit mit den Komponenten des struts-default-Pakets78
3.3 Implementierung von Actions80
3.3.1 Das optionale Action-Interface81
3.3.2 Die ActionSupport-Klasse82
3.3.2.1 Einfache Validierung83
3.3.2.2 Ressourcenbündel für Nachrichtentext88
3.4 Daten auf Objekte transferieren90
3.4.1 Objekt-gepufferte JavaBeans-Properties91
3.4.2 ModelDriven-Actions93
3.4.3 Domänenobjekte für Datentransfer – Eine Abschlussbemerkung95
3.5 Dateiupload – Eine Fallstudie96
3.5.1 Eingebauter Support über das Paket struts-default97
3.5.2 Was macht der fileUpload-Interceptor?97
3.5.3 Der Beispielcode von Struts 2 Portfolio98
3.5.3.1 Mehrere Dateien und andere Einstellungen101
3.6 Zusammenfassung101
4 Den Workflow mit Interceptors ergänzen103
4.1 Abfangen von Anfragen104
4.1.1 Das MVC aufräumen104
4.1.2 Die Vorteile einfahren106
4.1.3 Erstellen von Interceptors107
4.2 Interceptors im Einsatz108
4.2.1 Die Chefin: ActionInvocation108
4.2.2 Wie die Interceptors feuern108
4.3 Die in Struts 2 integrierten Interceptors111
4.3.1 Utility-Interceptors112
4.3.1.1 timer112
4.3.1.2 logger112
4.3.2 Interceptors für den Datentransfer112
4.3.2.1 params (defaultStack)113
4.3.2.2 static-params (defaultStack)113
4.3.2.3 autowiring113
4.3.2.4 servlet-config (defaultStack)114
4.3.2.5 fileUpload (defaultStack)114
4.3.3 Workflow-Interceptor114
4.3.3.1 workflow (defaultStack)115
4.3.3.2 validation (defaultStack)117
4.3.3.3 prepare (defaultStack)117
4.3.3.4 modelDriven (defaultStack)118
4.3.4 Weitere Interceptors119
4.3.4.1 exception (defaultStack)119
4.3.4.2 token und token-session120
4.3.4.3 scoped-modelDriven (defaultStack)120
4.3.4.4 execAndWait120
4.3.5 Integrierte Stacks121
4.4 Deklaration von Interceptors121
4.4.1 Deklaration einzelner Interceptors und Interceptor-Stacks122
4.4.1.1 Die Struktur der XML-Dokumente124
4.4.2 Interceptors auf Actions mappen124
4.4.3 Setzen und Überschreiben von Parametern125
4.5 Erstellen eigener Interceptors126
4.5.1 Implementierung des Interceptor-Interface126
4.5.2 Der AuthenticationInterceptor127
4.6 Zusammenfassung131
5 Datentransfer – OGNL und Typkonvertierung133
5.1 Datentransfer und Typkonvertierung: Übliche Aufgaben bei Webanwendungen134
5.2 OGNL und Struts 2135
5.2.1 Die Aufgabe von OGNL135
5.2.1.1 Die Ausdruckssprache135
5.2.1.2 Typkonverter137
5.2.2 Wie passt OGNL in das Framework?137
5.2.2.1 Eingehende Daten138
5.2.2.2 Ausgehende Daten140
5.3 Integrierte Typkonverter140
5.3.1 Konvertierungen out of the box141
5.3.2 Formularfeldnamen mit OGNL-Ausdrücken auf Properties mappen142
5.3.2.1 Primitive und Wrapper-Klassen142
5.3.2.2 Bearbeitung von Anfrageparametern mit mehreren Werten144
5.3.2.3 Arrays145
5.3.2.4 Lists147
5.3.2.5 Maps152
5.4 Eigene Typkonvertierungen155
5.4.1 Implementierung eines Typkonverters156
5.4.2 Konvertierung zwischen Strings und Circles157
5.4.3 Konfiguration des Frameworks zur Arbeit mit dem Konverter158
5.4.3.1 Property-spezifisch158
5.4.3.2 Globale Typkonverter160
5.5 Zusammenfassung160
Teil 3: Die View erstellen – Tags und Results162
6 Die View erstellen – Tags165
6.1 Auf die Plätze …166
6.1.1 Der ActionContext und OGNL166
6.1.1.1 Die Wahl des Root-Objekts für OGNL169
6.1.2 Der ValueStack – Ein virtuelles Objekt170
6.2 Die Tags von Struts im Überblick172
6.2.1 Die Syntax der Tag-API von Struts 2172
6.2.1.1 Die Syntax von JSP173
6.2.1.2 Die Syntax von Velocity173
6.2.1.3 Die Syntax von FreeMarker174
6.2.2 Attribute für Tags mit OGNL setzen174
6.2.2.1 String- und Nicht-String-Attribute175
6.2.2.2 Erzwingen einer OGNL-Auflösung176
6.3 Daten-Tags177
6.3.1 Das property-Tag178
6.3.2 Das set-Tag178
6.3.3 Das push-Tag180
6.3.4 Das bean-Tag181
6.3.5 Das action-Tag184
6.4 Control-Tags186
6.4.1 Das iterator-Tag186
6.4.1.1 Die Verwendung von IteratorStatus187
6.4.2 Die Tags if und else188
6.5 Verschiedene andere Tags188
6.5.1 Das include-Tag189
6.5.2 Das URL-Tag190
6.5.3 Die Tags i18n und text191
6.5.4 Das param-Tag193
6.6 Die Verwendung von JSTL und anderen nativen Tags194
6.7 Kurze Einführung in die Ausdruckssprache OGNL194
6.7.1 Was ist OGNL?194
6.7.2 Häufige Features einer Ausdruckssprache in Struts 2195
6.7.2.1 Referenzieren von Bean-Properties195
6.7.2.2 Setting oder Getting?196
6.7.2.3 Die Arbeit mit Java Collections197
6.7.2.4 Die Arbeit mit Lists und Arrays197
6.7.2.5 Die Arbeit mit Maps198
6.7.2.6 Collections filtern und projizieren200
6.7.3 Fortgeschrittene Features der Ausdruckssprache201
6.7.3.1 Literale und Operatoren201
6.7.3.2 Aufrufen von Methoden203
6.7.3.3 Zugriff auf statische Methoden und Felder203
6.8 Zusammenfassung204
7 UI-Komponenten-Tags207
7.1 Warum wir UI-Komponenten-Tags brauchen208
7.1.1 Mehr als nur Formularelemente208
7.1.1.1 HTML-Markup generieren209
7.1.1.2 Binden von Formularfeldern an ValueStack-Properties210
7.1.1.3 Integration von Typkonvertierung, Validierung und Internationalisierung214
7.2 Tags, Templates und Themes214
7.2.1 Tags216
7.2.2 Templates216
7.2.3 Themes217
7.2.3.1 Das Theme ändern218
7.3 Referenz der Tags der UI-Komponenten219
7.3.1 Allgemeine Attribute219
7.3.2 Einfache Komponenten221
7.3.2.1 Die head-Komponente221
7.3.2.2 Die form-Komponente222
7.3.2.3 Die textfield-Komponente227
7.3.2.4 Die password-Komponente229
7.3.2.5 Die textarea-Komponente230
7.3.2.6 Die checkbox-Komponente230
7.3.3 Von Collections gepufferte Komponenten233
7.3.3.1 Die select-Komponente233
7.3.3.2 Die radio-Komponente238
7.3.3.3 Die checkboxlist-Komponente239
7.3.3.4 Vorbelegung mit von Collections gepufferten Komponenten240
7.3.4 Bonus-Komponenten242
7.3.4.1 Die label-Komponente242
7.3.4.2 Die hidden-Komponente242
7.3.4.3 Die doubleselect-Komponente243
7.4 Zusammenfassung244
8 Results unter der Lupe247
8.1 Leben nach der Action248
8.1.1 Jenseits der Seite – Wie man mit eigenen Results Ajax-Anwendungen in Struts 2 erstellt249
8.1.2 Implementierung eines JSON-Result-Typs250
8.1.2.1 Ein Ajax-Client als Demo für unser Result251
8.1.2.2 Programmieren des JSONResults252
8.1.2.3 Ein Ajax-Client255
8.1.2.4 Die Action256
8.1.2.5 Deklaration und Verwendung des Typs JSONResult257
8.2 Häufig verwendete Result-Typen259
8.2.1 Der RequestDispatcher alias Dispatcher260
8.2.1.1 Der Servlet-Kern des DispatcherResults260
8.2.1.2 Normaler Workflow: Dispatching als forward()261
8.2.1.3 An ein anderes Servlet weiterleiten262
8.2.1.4 Dispatching als ein include()265
8.2.1.5 Einrichten eines RequestDispatcher-Results265
8.2.2 Das ServletRedirectResult alias redirect266
8.2.2.1 Einrichten eines Umleitungs-Results267
8.2.2.2 OGNL zum Erstellen dynamischer Standorte einbetten268
8.2.3 Das ServletActionRedirectResult alias redirectAction269
8.3 JSP-Alternativen271
8.3.1 VelocityResult alias velocity271
8.3.1.1 Die Arbeit mit Velocity-Results272
8.3.2 FreemarkerResult alias freemarker273
8.3.2.1 Die Arbeit mit FreeMarker-Results274
8.4 Globale Results275
8.5 Zusammenfassung276
Teil 4: Optimieren der Anwendung277
9 Integration mit Spring und Hibernate/JPA279
9.1 Warum bei Struts 2 mit Spring arbeiten?280
9.1.1 Wofür ist Abhängigkeitsinjektion gut?280
9.1.1.1 Eng gekoppelte Objekte281
9.1.2 Wie Spring Objekte verwaltet und Abhängigkeiten injiziert283
9.1.3 Mit Interfaces Implementierungen verstecken.284
9.2 Spring in Struts 2 einfügen287
9.2.1 Spring verwaltet die Erstellung von Actions, Interceptors und Results288
9.2.2 Autowiring zur Injektion von Abhängigkeiten in Actions, Interceptors und Results290
9.2.2.1 Autowiring nach name291
9.2.2.2 Autowiring nach type, constructor und auto292
9.3 Warum soll man bei Struts 2 die Java Persistence API nutzen?294
9.3.1 Das Projekt für JPA mit Hibernate einrichten294
9.3.1.1 Die Liste der passenden JAR-Dateien294
9.3.1.2 Die Wahl der Datenbank295
9.3.1.3 Mit Spring die JPA-Abhängigkeiten verwalten295
9.3.1.4 Lazy Loading mit dem OpenEntityManagerInView-Filter von Spring297
9.3.2 Programmieren einer von Spring verwalteten JPA299
9.3.2.1 Die Persistenzeinheit299
9.3.2.2 Mit Annotationen die Java-Klassen auf Datenbanktabellen mappen300
9.3.2.3 Mit dem JPA-EntityManager das Serviceobjekt implementieren301
9.4 Zusammenfassung303
10 Das Validierungsframework305
10.1 Das Validierungsframework306
10.1.1 Die Architektur des Validierungsframeworks306
10.1.1.1 Die Domänendaten306
10.1.1.2 Validierungsmetadaten307
10.1.1.3 Validatoren307
10.1.2 Das Validierungsframework im Workflow von Struts 2308
10.1.2.1 Die grundlegende Validierung308
10.1.2.2 Der Workflow des Validierungsframeworks309
10.2 Actions zur Validierung verschalten311
10.2.1 Deklaration der Validierungsmetadaten mit ActionClassvalidations.xml312
10.2.1.1 Feld-Validatoren314
10.2.1.2 Nicht-Feld-Validatoren314
10.2.1.3 Optionen für Nachrichtenelemente315
10.2.2 Die integrierten Validatoren316
10.3 Eigene Validatoren schreiben318
10.3.1 Mit eigenem Validator die Passwortstärke prüfen318
10.3.2 Die Arbeit mit dem eigenen Validator321
10.4 Fortgeschrittene Themen des Validierungsframeworks322
10.4.1 Validierung auf der Ebene des Domänenobjekts322
10.4.2 Mit Validierungskontext die Validierungen verfeinern326
10.4.2.1 Den Validierungskontext mit dem Validator visitor und Domänenobjekten verwenden327
10.4.3 Vererbung der Validierung329
10.4.4 Vorzeitiges Beenden von Validierungen329
10.4.5 Validierungen mit Annotationen deklarieren330
10.5 Zusammenfassung332
11 Die Internationalisierung335
11.1 Java-i18n und das Framework von Struts 2336
11.1.1 Auslesen von lokalisiertem Text mit ResourceBundle und Locale337
11.1.1.1 Ressourcen in einem ResourceBundle speichern337
11.1.1.2 Die Arbeit mit nativen Java-ResourceBundles338
11.1.2 Wie Struts 2 die Arbeit mit i18n erleichtert340
11.2 Eine i18n-Demo für Struts 2341
11.2.1 Eine kurze Demo für Struts 2 und i18n341
11.2.2 Ein kurzer Blick hinter die Kulissen343
11.3 i18n bei Struts 2 – Die Details345
11.3.1 Der Default-Lokalisierungsalgorithmus von Struts 2345
11.3.1.1 Die Spezifizität der Sprach- und Ländereinstellungen und das Auslesen von Nachrichten348
11.3.1.2 Definition von Default-Bundles349
11.3.2 Nachrichtentexte aus den Bundles auslesen350
11.3.2.1 Auslesen der richtigen Sprache350
11.3.2.2 Das key-Attribut der UI-Komponenten-Tags351
11.3.2.3 Lokalisieren der Fehlermeldungen für die Validierung352
11.3.2.4 Lokalisieren der Fehlermeldungen aus der Typkonvertierung353
11.3.3 Ein Bundle über das i18n-Tag angeben354
11.3.4 Parametrisierung der lokalisierten Texte354
11.3.4.1 Parametrisierung von Nachrichtentexten mit OGNL-Ausdrücken355
11.3.4.2 Parametrisierung der Nachrichtentexte mit nativen Java-Fähigkeiten355
11.3.5 Formatierung von Datumsangaben und Zahlen356
11.4 Überschreiben der Default-Erkennung des Gebietsschemas357
11.4.1 Interaktives Setzen von Sprach- und Ländereinstellungen358
11.4.1.1 Der i18n-Interceptor358
11.4.2 Sprach- und Ländereinstellungen programmatisch setzen360
11.5 Zusammenfassung361
Teil 5: Fortgeschrittene Themen und Best Practices363
12 Struts 2 mit Plug-ins erweitern365
12.1 Plug-ins – Ein Überblick366
12.1.1 Wie man Plug-ins findet367
12.2 Bekannte Plug-ins367
12.2.1 SiteMesh368
12.2.2 Tiles369
12.2.3 JFreeChart371
12.3 Das interne Komponentensystem373
12.3.1 Beans373
12.3.2 Konstanten374
12.3.3 Injektion374
12.3.4 Interne Erweiterungspunkte von Struts375
12.4 Ein Breadcrumb-Plug-in schreiben377
12.5 Zusammenfassung381
13 Best Practices383
13.1 Die Umgebung einrichten384
13.1.1 Die IDE einrichten384
13.1.2 Ressourcen erneut laden385
13.2 Unit-Tests für Ihre Actions385
13.2.1 Der Vorteil von IoC für Tests386
13.2.2 JUnit und die Tests387
13.2.3 Tests von validation.xml-Dateien389
13.3 Die Wiederverwendbarkeit maximieren390
13.3.1 Komponenten mit dem component-Tag erstellen391
13.3.2 Arbeit mit den Template-Tags392
13.3.3 Verbindung der Punkte von der UI zu den Objekten393
13.4 Fortgeschrittene Verwendung der UI-Tags394
13.4.1 Überschreiben vorhandener Templates394
13.4.2 Eigene Templates schreiben395
13.4.3 Eigene Themes schreiben395
13.4.3.1 Ein Theme von Grund auf neu erstellen (schwer!)395
13.4.3.2 Ein vorhandenes Theme wrappen396
13.4.3.3 Ein vorhandenes Theme erweitern396
13.5 Zusammenfassung396
14 Migration von Struts Classic397
14.1 Der Wissenstransfer aus Struts Classic397
14.1.1 Actions398
14.1.2 Wo sind die ActionForms geblieben?399
14.1.3 Austausch der Tag-Libraries401
14.1.4 Verteilen der Nachrichtenressourcen403
14.2 Schrittweise Konvertierung405
14.2.1 Rom schrittweise erobern406
14.2.2 Die Action-Mappings407
14.2.3 Wo die Action das Formular trifft409
14.2.4 Die Seite wandeln410
14.2.5 No speak English413
14.2.6 Die Datenpolizei414
14.2.7 Könnten wir nicht einfach so klarkommen?416
14.3 Zusammenfassung418
15 Themen für Fortgeschrittene419
15.1 Fortgeschrittene Verwendung von Actions419
15.1.1 Alternative Methodenaufrufe420
15.2 Dynamische Methodenaufrufe421
15.2.1 Die Methodenauswahl per Wildcard421
15.2.2 Dynamische Workflows424
15.3 Mit Tokens doppelte Formularübermittlungen verhindern425
15.3.1 Das -Formular-Tag425
15.3.2 Ausnahmen zur token-Interceptor-Regel427
15.4 Seiten mit Fortschrittsanzeige automatisch darstellen429
15.4.1 User am Rande des Nervenzusammenbruchs429
15.5 Eine einzige Action für CRUD-Operationen430
15.5.1 Dieses CRUD431
15.5.2 Interceptors und Interfaces432
15.5.3 Die Teile verbinden437
15.6 Tiles und Struts 2439
15.6.1 Look & Feel der Website440
15.6.2 Konfiguration des Zusammenspiels441
15.6.3 Die Arbeit mit der deklarativen Architektur443
15.6.4 Vorbereiten der Inhalte einer Webseite mit einem Tiles-Controller445
15.7 Zusammenfassung447
Register449

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

Menschen. Inklusiv leben

Menschen. Inklusiv leben

MENSCHEN. das magazin informiert über Themen, die das Zusammenleben von Menschen in der Gesellschaft bestimmen -und dies konsequent aus Perspektive der Betroffenen. Die Menschen, um die es geht, ...

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

dental:spiegel

dental:spiegel

dental:spiegel - Das Magazin für das erfolgreiche Praxisteam. Der dental:spiegel gehört zu den Top 5 der reichweitenstärksten Fachzeitschriften für Zahnärzte in Deutschland (laut LA-DENT 2011 ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

DHS

DHS

Die Flugzeuge der NVA Neben unser F-40 Reihe, soll mit der DHS die Geschichte der "anderen" deutschen Luftwaffe, den Luftstreitkräften der Nationalen Volksarmee (NVA-LSK) der ehemaligen DDR ...

DULV info

DULV info

UL-Technik, UL-Flugbetrieb, Luftrecht, Reiseberichte, Verbandsinte. Der Deutsche Ultraleichtflugverband e. V. - oder kurz DULV - wurde 1982 von ein paar Enthusiasten gegründet. Wegen der hohen ...

ea evangelische aspekte

ea evangelische aspekte

evangelische Beiträge zum Leben in Kirche und Gesellschaft Die Evangelische Akademikerschaft in Deutschland ist Herausgeberin der Zeitschrift evangelische aspekte Sie erscheint viermal im Jahr. In ...