SlideShare a Scribd company logo
1 of 26
Download to read offline
Christian Kaltepoth / ingenit GmbH & Co. KG
Andy Bosch / Berater und Trainer

PrettyFaces:
    RESTful URLs für JSF
Agenda
•   Begriffsklärung: RESTful URLs
•   Was bietet JSF?
•   Einführung in PrettyFaces
•   Live-Demonstration
•   Fazit / Ausblick
RESTful URLs

 Was ist das?
Prinzipien für RESTful URLs
    http://example.com/products/4554


•   Eindeutige Adressierbarkeit
•   Zustandslosigkeit
•   GET als bevorzugte Operation
•   Einfache HTML Links
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/elektronik
„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 Resubmissions
  – Besseres Verhalten bei Back-Button
    Nutzung oder Reload der Seite
• Optimale Bedienbarkeit
  – Bookmarks / „In neuem Tab öffnen“
• Verknüpfungen zwischen Anwendungen
Was bietet JSF
für RESTful URLs?
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
JSF 2.0 / 2.1
• GET-Support:
  – JSF View Parameter
  – PreRenderView Event
  – <h:link> und <h:button>
• Unterstützung von Redirects bei
  impliziter Navigation
Was bietet PrettyFaces darüber
           hinaus?
Rewriting
• Beliebige Adressen für JSF Seiten
• FacesServlet Mapping irrelevant

http://shop.de/faces/warenkorb.xhtml
                  ↓
      http://shop.de/warenkorb
Path-Parameter
• Echte Path-Parameter
• Integration mit JSF View Parametern

http://shop.de/faces/artikel.xhtml?
         kategorie=notebooks
                  ↓
 http://shop.de/kategorie/notebooks
Page Actions
• Ausführung beim Seitenzugriff
• Vorherige Konvertierung und Validierung

     http://shop.de/notebooks

                Page Action:
  Lade Artikel der Kategorie „Notebooks“
Annotations
@Named
@RequestScoped
@URLMapping(pattern="/warenkorb",
            viewId="/faces/warenkorb.xhtml")
public class WarenkorbBean {

  @URLAction
  public void loadData() {
    …
  }

}
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>
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>
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
  Anwendung

    PrettyFaces ist eine sinnvolle
   Ergänzung für jedes JSF Projekt!
Fast hätte ich es vergessen:
• Erweiterung durch SPIs:
  –   ConfigurationProvider
  –   ConfigurationPostProcessor
  –   Processor
  –   ELBeanNameResolver
  –   DevelopmentModeDetector
  –   etc.
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/
public Configuration getConfiguration(ServletContext ctx) {

    return ConfigurationBuilder.begin()
             .defineRule()
             .when(Direction.isInbound().and(
                        Path.matches("/some/{page}/.*/")))
             .perform(Forward.to("/new­{page}/"));

}
Fragen?
Vielen Dank für die Aufmerksamkeit!

 http://ocpsoft.com/prettyfaces/

Christian Kaltepoth                      Andy Bosch
christian@kaltepoth.de   andy.bosch@jsf-academy.com
     @chkal                              @andybosch

More Related Content

What's hot

1&1 Frontend Workshop II
1&1 Frontend Workshop II1&1 Frontend Workshop II
1&1 Frontend Workshop IINico Steiner
 
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web AppsKarlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web AppsJan Stamer
 
CQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InCQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InPHP in DD
 
JCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web AppsJCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web AppsJan Stamer
 
Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Hussein Morsy
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateMichael Mirold
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeNico Steiner
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.David Jardin
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseOPEN KNOWLEDGE GmbH
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
Andy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy Bosch
 
Javascript done right
Javascript done rightJavascript done right
Javascript done rightDirk Ginader
 

What's hot (15)

Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
1&1 Frontend Workshop II
1&1 Frontend Workshop II1&1 Frontend Workshop II
1&1 Frontend Workshop II
 
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web AppsKarlsruher Entwicklertag 2021: Turbo powered Web Apps
Karlsruher Entwicklertag 2021: Turbo powered Web Apps
 
CQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-InCQRS in der Praxis - Newsletter Double-Opt-In
CQRS in der Praxis - Newsletter Double-Opt-In
 
JCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web AppsJCON 2021: Turbo powered Web Apps
JCON 2021: Turbo powered Web Apps
 
Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3Unobtrusive JavaScript in Rails 3
Unobtrusive JavaScript in Rails 3
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
 
Frontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 BestellsystemeFrontend-Architektur der 1&1 Bestellsysteme
Frontend-Architektur der 1&1 Bestellsysteme
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/Response
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Andy bosch-jsf-javascript
Andy bosch-jsf-javascriptAndy bosch-jsf-javascript
Andy bosch-jsf-javascript
 
Javascript done right
Javascript done rightJavascript done right
Javascript done right
 

Viewers also liked (14)

Slidechare
SlidechareSlidechare
Slidechare
 
xailabs SCRUM-Workshop (bvh 2.013 vom 11.04.2013)
xailabs  SCRUM-Workshop (bvh 2.013 vom 11.04.2013)xailabs  SCRUM-Workshop (bvh 2.013 vom 11.04.2013)
xailabs SCRUM-Workshop (bvh 2.013 vom 11.04.2013)
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
DUMAUG_ARTICLE VI: LEGISLATIVE BRANCH
DUMAUG_ARTICLE VI: LEGISLATIVE BRANCHDUMAUG_ARTICLE VI: LEGISLATIVE BRANCH
DUMAUG_ARTICLE VI: LEGISLATIVE BRANCH
 
Geschichte der fotografie
Geschichte der fotografieGeschichte der fotografie
Geschichte der fotografie
 
The simpsons family
The simpsons familyThe simpsons family
The simpsons family
 
facebook, twitter, xing und co. Die (regionale) Zukunft im Marketing oder nur...
facebook, twitter, xing und co. Die (regionale) Zukunft im Marketing oder nur...facebook, twitter, xing und co. Die (regionale) Zukunft im Marketing oder nur...
facebook, twitter, xing und co. Die (regionale) Zukunft im Marketing oder nur...
 
pi985.pdf
pi985.pdfpi985.pdf
pi985.pdf
 
PM 11-12-15 BKK Gesundheitsreport.pdf
PM 11-12-15 BKK Gesundheitsreport.pdfPM 11-12-15 BKK Gesundheitsreport.pdf
PM 11-12-15 BKK Gesundheitsreport.pdf
 
Kojenpreise Deutschland debe.destyle - CIA.pdf
Kojenpreise Deutschland debe.destyle - CIA.pdfKojenpreise Deutschland debe.destyle - CIA.pdf
Kojenpreise Deutschland debe.destyle - CIA.pdf
 
Hp pay for print flyer 1309
Hp pay for print flyer 1309Hp pay for print flyer 1309
Hp pay for print flyer 1309
 
Neue Kreativtechniken.pdf
Neue Kreativtechniken.pdfNeue Kreativtechniken.pdf
Neue Kreativtechniken.pdf
 
Charts_Reithofer_BPK_2010.pdf
Charts_Reithofer_BPK_2010.pdfCharts_Reithofer_BPK_2010.pdf
Charts_Reithofer_BPK_2010.pdf
 
KRASS stellt sich vor!
KRASS stellt sich vor!KRASS stellt sich vor!
KRASS stellt sich vor!
 

Similar to PrettyFaces: RESTful URLs für JSF

Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...kaftanenko
 
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021SEARCH ONE
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIAlexander Zeitler
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere RESTMartin Abraham
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...predic8
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHSebastian Heuer
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS ViewsCadaxo GmbH
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
Legacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenLegacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenPhilipp Burgmer
 
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013Performance Optimierung mit Mod_Pagespeed - WP Camp 2013
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013Bernhard Kau
 

Similar to PrettyFaces: RESTful URLs für JSF (20)

Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Workshop Vue js
Workshop Vue jsWorkshop Vue js
Workshop Vue js
 
Moderner Webentwicklungs-Workflow
Moderner Webentwicklungs-WorkflowModerner Webentwicklungs-Workflow
Moderner Webentwicklungs-Workflow
 
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
Einführung in die Java-Webentwicklung - Part II - [3 of 3] - Java Server Face...
 
PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021PageSpeed Extreme für das große Speed Update 2021
PageSpeed Extreme für das große Speed Update 2021
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
AngularJs
AngularJsAngularJs
AngularJs
 
Hypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web APIHypermedia mit der ASP.NET Web API
Hypermedia mit der ASP.NET Web API
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Globetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HHGlobetrotter @ E-Commerce Hacktable HH
Globetrotter @ E-Commerce Hacktable HH
 
Automatisierung mit grunt
Automatisierung mit gruntAutomatisierung mit grunt
Automatisierung mit grunt
 
Net@night asp.net mvc
Net@night asp.net mvcNet@night asp.net mvc
Net@night asp.net mvc
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
Legacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpenLegacy WebApps mit AngularJS pimpen
Legacy WebApps mit AngularJS pimpen
 
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013Performance Optimierung mit Mod_Pagespeed - WP Camp 2013
Performance Optimierung mit Mod_Pagespeed - WP Camp 2013
 

PrettyFaces: RESTful URLs für JSF