JSF 2.x hat mit einem verbesserten GET-Support und View-Parametern inzwischen schon einiges zum Thema RESTful zu bieten. Das Open-Source-Projekt PrettyFaces geht noch einen Schritt weiter, in dem es erlaubt, fast beliebige RESTful URLs zu erzeugen. Zudem bietet PrettyFaces noch weitere hilfreiche Goodies. In dieser Session wird auf die Konfiguration und die Verwendung von PrettyFaces im Detail eingegangen und aufgezeigt, wie sich zudem ganz einfach die SEO-Eigenschaften (Search Engine Optimization) der Applikation verbessern lassen.
4. Prinzipien für RESTful URLs
http://example.com/products/4554
• Eindeutige Adressierbarkeit
• Zustandslosigkeit
• GET als bevorzugte Operation
• Einfache HTML Links
5. Warum RESTful URLs?
• Lesbarkeit (Wo bin ich?)
• SEO / Keywords in URL
• „Vertrauen“
• Die URLs sind „schön“
8. Warum RESTful URLs?
• Post-Redirect-Get (PRG) Pattern:
– Auf ein POST folgt ein Redirect
– Vermeidung von Form Resubmissions
– Besseres Verhalten bei Back-Button
Nutzung oder Reload der Seite
• Optimale Bedienbarkeit
– Bookmarks / „In neuem Tab öffnen“
• Verknüpfungen zwischen Anwendungen
10. JSF 1.2 und älter
• Navigationsregeln in faces-config.xml
• Kein echter GET-Support
• Query-Parameter nur mit Umwegen
• Darum viele Postbacks
• „Vorherige Seite“ in Adresszeile
11. JSF 2.0 / 2.1
• GET-Support:
– JSF View Parameter
– PreRenderView Event
– <h:link> und <h:button>
• Unterstützung von Redirects bei
impliziter Navigation
15. Page Actions
• Ausführung beim Seitenzugriff
• Vorherige Konvertierung und Validierung
http://shop.de/notebooks
Page Action:
Lade Artikel der Kategorie „Notebooks“
18. Rewrite Engine
• Vergleichbar mit mod_rewrite
• Deployment der Regeln mit der Anwendung
• Migration „alter URLs“
<prettyconfig xmlns="http://ocpsoft.com/prettyfaces/3.3.0">
<rewrite match="^/kategorie.php?name=(w+)$"
substitute="/kategorie/$1" redirect="301" />
</prettyconfig>
19. Weiteres
• PrettyFaces nicht nur für JSF
• Lizenz: Apache 2.0
• Integration mit:
– JSF 1.2 / 2.0 / 2.1
– CDI
– Spring
20. Neugierig?
Nun folgt eine Demonstration!
https://github.com/chkal/wjax11demo
21. PrettyFaces…
• macht Ihre Applikation „schöner“
• ist leicht zu integrieren/konfigurieren
• vereinfacht Entwicklung und
Anwendung
PrettyFaces ist eine sinnvolle
Ergänzung für jedes JSF Projekt!
22. Fast hätte ich es vergessen:
• Erweiterung durch SPIs:
– ConfigurationProvider
– ConfigurationPostProcessor
– Processor
– ELBeanNameResolver
– DevelopmentModeDetector
– etc.
23. Was bringt die Zukunft?
• Fokus liegt auf PrettyFaces 4.0
• Basierung auf Rewrite:
– Neuimplementierung der Kernfunktionen als
dediziertes Projekt
– Unabhängig von JSF einsetzbar
– Konfiguration durch „Fluent API“
→ http://ocpsoft.com/rewrite/
26. Vielen Dank für die Aufmerksamkeit!
http://ocpsoft.com/prettyfaces/
Christian Kaltepoth Andy Bosch
christian@kaltepoth.de andy.bosch@jsf-academy.com
@chkal @andybosch