Christian Kaltepoth / ingenit GmbH & Co. KGAndy Bosch / Berater und TrainerPrettyFaces:    RESTful URLs für JSF
Agenda•   Begriffsklärung: RESTful URLs•   Was bietet JSF?•   Einführung in PrettyFaces•   Live-Demonstration•   Fazit / A...
RESTful URLs Was ist das?
Prinzipien für RESTful URLs    http://example.com/products/4554•   Eindeutige Adressierbarkeit•   Zustandslosigkeit•   GET...
Warum RESTful URLs?•   Lesbarkeit (Wo bin ich?)•   SEO / Keywords in URL•   „Vertrauen“•   Die URLs sind „schön“
Schön?!?http://www.amazon.de/b/ref=sa_menu_    desk3?ie=UTF8&node=514699031              Schön!  http://www.ebay.de/elektr...
„Brauchen wir nicht!Wir entwickeln Anwendungen für das              Intranet!“
Warum RESTful URLs?• Post-Redirect-Get (PRG) Pattern:  – Auf ein POST folgt ein Redirect  – Vermeidung von Form Resubmissi...
Was bietet JSFfür RESTful URLs?
JSF 1.2 und älter•   Navigationsregeln in faces-config.xml•   Kein echter GET-Support•   Query-Parameter nur mit Umwegen• ...
JSF 2.0 / 2.1• GET-Support:  – JSF View Parameter  – PreRenderView Event  – <h:link> und <h:button>• Unterstützung von Red...
Was bietet PrettyFaces darüber           hinaus?
Rewriting• Beliebige Adressen für JSF Seiten• FacesServlet Mapping irrelevanthttp://shop.de/faces/warenkorb.xhtml         ...
Path-Parameter• Echte Path-Parameter• Integration mit JSF View Parameternhttp://shop.de/faces/artikel.xhtml?         kateg...
Page Actions• Ausführung beim Seitenzugriff• Vorherige Konvertierung und Validierung     http://shop.de/notebooks         ...
Annotations@Named@RequestScoped@URLMapping(pattern="/warenkorb",            viewId="/faces/warenkorb.xhtml")public class W...
XML Konfiguration   • /WEB­INF/pretty­config.xml<pretty­config xmlns="http://ocpsoft.com/prettyfaces/3.3.0">   <url­mappin...
Rewrite Engine  • Vergleichbar mit mod_rewrite  • Deployment der Regeln mit der Anwendung  • Migration „alter URLs“<pretty...
Weiteres• PrettyFaces nicht nur für JSF• Lizenz: Apache 2.0• Integration mit:  – JSF 1.2 / 2.0 / 2.1  – CDI  – Spring
Neugierig?   Nun folgt eine Demonstration!https://github.com/chkal/wjax11­demo
PrettyFaces…• macht Ihre Applikation „schöner“• ist leicht zu integrieren/konfigurieren• vereinfacht Entwicklung und  Anwe...
Fast hätte ich es vergessen:• Erweiterung durch SPIs:  –   ConfigurationProvider  –   ConfigurationPostProcessor  –   Proc...
Was bringt die Zukunft?• Fokus liegt auf PrettyFaces 4.0• Basierung auf Rewrite:  – Neuimplementierung der Kernfunktionen ...
public Configuration getConfiguration(ServletContext ctx) {    return ConfigurationBuilder.begin()             .defineRule...
Fragen?
Vielen Dank für die Aufmerksamkeit! http://ocpsoft.com/prettyfaces/Christian Kaltepoth                      Andy Boschchri...
Upcoming SlideShare
Loading in...5
×

PrettyFaces: RESTful URLs für JSF

2,172

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,172
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PrettyFaces: RESTful URLs für JSF

  1. 1. Christian Kaltepoth / ingenit GmbH & Co. KGAndy Bosch / Berater und TrainerPrettyFaces: RESTful URLs für JSF
  2. 2. Agenda• Begriffsklärung: RESTful URLs• Was bietet JSF?• Einführung in PrettyFaces• Live-Demonstration• Fazit / Ausblick
  3. 3. RESTful URLs Was ist das?
  4. 4. Prinzipien für RESTful URLs http://example.com/products/4554• Eindeutige Adressierbarkeit• Zustandslosigkeit• GET als bevorzugte Operation• Einfache HTML Links
  5. 5. Warum RESTful URLs?• Lesbarkeit (Wo bin ich?)• SEO / Keywords in URL• „Vertrauen“• Die URLs sind „schön“
  6. 6. Schön?!?http://www.amazon.de/b/ref=sa_menu_ desk3?ie=UTF8&node=514699031 Schön! http://www.ebay.de/elektronik
  7. 7. „Brauchen wir nicht!Wir entwickeln Anwendungen für das Intranet!“
  8. 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
  9. 9. Was bietet JSFfür RESTful URLs?
  10. 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. 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
  12. 12. Was bietet PrettyFaces darüber hinaus?
  13. 13. Rewriting• Beliebige Adressen für JSF Seiten• FacesServlet Mapping irrelevanthttp://shop.de/faces/warenkorb.xhtml ↓ http://shop.de/warenkorb
  14. 14. Path-Parameter• Echte Path-Parameter• Integration mit JSF View Parameternhttp://shop.de/faces/artikel.xhtml? kategorie=notebooks ↓ http://shop.de/kategorie/notebooks
  15. 15. Page Actions• Ausführung beim Seitenzugriff• Vorherige Konvertierung und Validierung http://shop.de/notebooks Page Action: Lade Artikel der Kategorie „Notebooks“
  16. 16. Annotations@Named@RequestScoped@URLMapping(pattern="/warenkorb",            viewId="/faces/warenkorb.xhtml")public class WarenkorbBean {  @URLAction  public void loadData() {    …  }}
  17. 17. XML Konfiguration • /WEB­INF/pretty­config.xml<pretty­config xmlns="http://ocpsoft.com/prettyfaces/3.3.0">   <url­mapping id="warenkorb">      <pattern value="/warenkorb" />      <view­id value="/faces/warenkorb.xhtml" />      <action>#{warenkorbBean.loadData}</action>   </url­mapping></pretty­config>
  18. 18. Rewrite Engine • Vergleichbar mit mod_rewrite • Deployment der Regeln mit der Anwendung • Migration „alter URLs“<pretty­config xmlns="http://ocpsoft.com/prettyfaces/3.3.0">    <rewrite match="^/kategorie.php?name=(w+)$"             substitute="/kategorie/$1" redirect="301" /></pretty­config>
  19. 19. Weiteres• PrettyFaces nicht nur für JSF• Lizenz: Apache 2.0• Integration mit: – JSF 1.2 / 2.0 / 2.1 – CDI – Spring
  20. 20. Neugierig? Nun folgt eine Demonstration!https://github.com/chkal/wjax11­demo
  21. 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. 22. Fast hätte ich es vergessen:• Erweiterung durch SPIs: – ConfigurationProvider – ConfigurationPostProcessor – Processor – ELBeanNameResolver – DevelopmentModeDetector – etc.
  23. 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/
  24. 24. public Configuration getConfiguration(ServletContext ctx) {    return ConfigurationBuilder.begin()             .defineRule()             .when(Direction.isInbound().and(                        Path.matches("/some/{page}/.*/")))             .perform(Forward.to("/new­{page}/"));}
  25. 25. Fragen?
  26. 26. Vielen Dank für die Aufmerksamkeit! http://ocpsoft.com/prettyfaces/Christian Kaltepoth Andy Boschchristian@kaltepoth.de andy.bosch@jsf-academy.com @chkal @andybosch
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×