SlideShare a Scribd company logo
PrettyFaces Client-facing JSF – Lincoln Baxter, III
SiteMap PrettyFaces background
basics
navigation
SEO
examples
PrettyFaces is: Url Rewriting http://example.com/faces/store .jsf http://example.com/ store
PrettyFaces is: Url Parameterization http://example.com/store/item/ Z34SD498
PrettyFaces is: Declarative Data Loading <action>  #{storeBean.loadItem}  </action>
PrettyFaces is: Simplified Navigation “ viewStore ” -> http://example.com/store
SiteMap PrettyFaces background
basics
navigation
SEO
examples
The PrettyFaces Story Lincoln Baxter, III PrettyFaces/PrettyTime Founder of  O cpSoft
The PrettyFaces Story Lincoln Baxter, III Founder of  O cpSoft @lincolnthree http://ocpsoft.com http://scrumshark.com http://ocpsoft.com/prettyfaces http://ocpsoft.com/prettytime
The Problem JSF1.x Good separation between M & V of MVC
Had usability issues, pitfalls
Navigation was a pain...
No bookmarks? Not entirely true.
What about Pretty URLs / SEO?
The Result Took a while Tried a few other tools
Applied the 80/20 rule
Destroyed Thanksgiving 2008
The Result Came out with a Gem:  PrettyFaces URLs were clean, search optimized
Faces-config practically gone
Data loading easy & declarative Easy, Bookmarkable JSF
:) Life is good
Why do we need Pretty URLs? Build Trust
Enhance User Experience
Self-Promote
SiteMap PrettyFaces background
basics
navigation
SEO
examples
Rethinking Navigation The Basics Keep it simple...
SiteMap PrettyFaces background
basics
navigation
SEO
examples clean
parameterize
validate
load
Keep URLs Clean Build trust by reducing clutter Before: http://example.com/news.xhtml?p=my-new-post After:  http://example.com/news/my-new-post/
Keep URLs Clean Real Life: Should have been: http://www.llbean.com/webapp/wcs/stores/servlet/CategoryDisplay?categoryId=28&storeId=1&catalogId=1&langId=-1&nav=hp-gndp http://llbean.com/kids http://www.llbean.com/webapp/wcs/stores/servlet/CategoryDisplay? categoryId=28 & storeId=1 & catalogId=1 & langId=-1 & nav=hp-gndp Vulnerable!
Keep URLs Clean Why don't more people buy used cars?
Keep URLs Clean They don't trust the last owner. They're afraid of getting a bad deal.
Keep URLs Clean Trust me?
Trust me. http:// www.linkedin.com/in/lincolnthree http://ocpsoft.com/prettyfaces http://sourceforge.net/projects/resteasy/ http://www.youtube.com/watch?v=ZOU8GIRUd_g
Keep URLs Clean Clean, readable URLs: Build trust
Are self-promoting, benefit SEO
Reduce vulnerability
Root the user
SiteMap PrettyFaces background
basics
navigation
SEO
examples clean
parameterize
validate
load
Parameterization (p14n) / root / the / user Be consistent... always
Be general, progress to specific
Keep the query string optional
Parameterization (p14n) P14N is: a “Scope”
where I am & what I'm looking at
user accessible
Parameterization (p14n) Examples: No! http://scrumshark.com/project/PrettyFaces http://scrumshark.com/project/PrettyFaces /s7 http://scrumshark.com/project/PrettyFaces /iterations http://scrumshark.com/project/PrettyFaces /iterations/Sprint1 http://scrumshark.com/PrettyFaces/Sprint1/iterations/project
Problem solved <pretty-config> ... <url-mapping id=”viewProject”> <pattern> / project / #{currentProjectBean.project} </pattern> <view-id>/faces/project/view.xhtml</view-id> </url-mapping> … </pretty-config> PrettyFaces
SiteMap PrettyFaces background
basics
navigation
SEO
examples clean
parameterize
validate
load
Validation P14n is a “Scope”
End-users have  DIRECT ACCESS
Validate everything
Validation @FacesValidator(“ projectName ”) public class ProjectNameValidator { public void validate(...) } <url-mapping id=”viewProject”> <pattern value=”/project/#{currentProjectBean.project}”> <validate param=&quot;0&quot; validatorIds=” projectName ... ” /> </pattern> <view-id>/faces/project/view.xhtml</view-id> </url-mapping> pretty-config.xml
Validation Yes – pretty:id or empty PrettyFaces Validation Send 404 Is onError handler  defined? Handler returned Successfully? Inject values & continue or redirect to “pretty:id”  Throw Exception
SiteMap PrettyFaces background

More Related Content

ODP
Beautiful Java EE - PrettyFaces
PDF
2012 03 27_philly_jug_rewrite_static
ODP
Pretty Bookmarkable JSF: PrettyFaces
ODP
PrettyFaces URLRewrite for Servlet & JavaEE @ Devoxx 2010
PDF
Going Above JSF 2.0 with RichFaces and Seam
ODP
Bookmarkable JSF: PrettyFaces
PDF
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
PDF
The Structure of Web Code: A Case For Polymer, November 1, 2014
Beautiful Java EE - PrettyFaces
2012 03 27_philly_jug_rewrite_static
Pretty Bookmarkable JSF: PrettyFaces
PrettyFaces URLRewrite for Servlet & JavaEE @ Devoxx 2010
Going Above JSF 2.0 with RichFaces and Seam
Bookmarkable JSF: PrettyFaces
How Googlebot Renders (Roleplaying as Google's Web Rendering Service-- D&D st...
The Structure of Web Code: A Case For Polymer, November 1, 2014

What's hot (19)

PPT
Fundamentals of web_design_v2
PPTX
Advanced Data-Driven SEO
PDF
HTML5 workshop, part 1
PPT
SiteMesh
PDF
Advanced Technical SEO - Index Bloat & Discovery: from Facets to Javascript F...
PDF
Optimizing with Server Logs | Jamie Alberico @ #TechSEO Boost 2018
PDF
Challenges of building a search engine like web rendering service
PDF
SEO AJAX Crawlability in a Responsive Publisher World
PPTX
GTM Clowns, fun and hacks - Search Elite - May 2017 Gerry White
PDF
Dreamweaver CS6, jQuery, PhoneGap, mobile design
PDF
Real World Web Standards
PDF
BDD - Writing better scenario
PDF
Search Engines and Flash: Secrets, Tricks, and Black Magic
PDF
State of jQuery '09
PDF
Traxo Presentation - Facebook Garage Dallas 09
PDF
Web Development for UX Designers
PPTX
Real-World AJAX with ASP.NET
PPTX
SEARCH Y - Bastian Grimm - Migrations Best Practices
Fundamentals of web_design_v2
Advanced Data-Driven SEO
HTML5 workshop, part 1
SiteMesh
Advanced Technical SEO - Index Bloat & Discovery: from Facets to Javascript F...
Optimizing with Server Logs | Jamie Alberico @ #TechSEO Boost 2018
Challenges of building a search engine like web rendering service
SEO AJAX Crawlability in a Responsive Publisher World
GTM Clowns, fun and hacks - Search Elite - May 2017 Gerry White
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Real World Web Standards
BDD - Writing better scenario
Search Engines and Flash: Secrets, Tricks, and Black Magic
State of jQuery '09
Traxo Presentation - Facebook Garage Dallas 09
Web Development for UX Designers
Real-World AJAX with ASP.NET
SEARCH Y - Bastian Grimm - Migrations Best Practices
Ad

Similar to PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (UrlRewrite) (20)

PPTX
Go Fullstack: JSF for Public Sites (CONFESS 2012)
PDF
Primefaces mobile users_guide_0_9
PPTX
Go Fullstack: JSF for Public Sites (CONFESS 2013)
PPT
Jsf2.0 -4
KEY
Developers and Designers: Make Your Website Visible In Search Engines
PDF
AnkaraJUG Kasım 2012 - PrimeFaces
PPT
rendre AJAX crawlable par les moteurs
KEY
Online Collections Crawlability for Libraries, Archives, and Museums
PDF
Programmatic SEO: How to Dominate SEO Like TripAdvisor, Yelp and Zillow
PPTX
SEO & AJAX - problems or opportunities? - SMX Milan 2015
PPTX
Everything you wanted to know about crawling, but didn't know where to ask
PDF
Dynamics CRM Data Integration
PPTX
Resource Routing in ExpressionEngine
PPTX
Crawl optimization - ( How to optimize to increase crawl budget)
PDF
JavaServer Faces 2.0 - JavaOne India 2011
PPTX
Seo and analytics basics
PDF
Lec5 ecom fall16_modified7_november16
PDF
Keeping Things Lean & Mean: Crawl Optimisation - Search Marketing Summit AU
PPTX
Single page applications the basics
PDF
Beyond PrettyFaces - Einführung in Rewrite
Go Fullstack: JSF for Public Sites (CONFESS 2012)
Primefaces mobile users_guide_0_9
Go Fullstack: JSF for Public Sites (CONFESS 2013)
Jsf2.0 -4
Developers and Designers: Make Your Website Visible In Search Engines
AnkaraJUG Kasım 2012 - PrimeFaces
rendre AJAX crawlable par les moteurs
Online Collections Crawlability for Libraries, Archives, and Museums
Programmatic SEO: How to Dominate SEO Like TripAdvisor, Yelp and Zillow
SEO & AJAX - problems or opportunities? - SMX Milan 2015
Everything you wanted to know about crawling, but didn't know where to ask
Dynamics CRM Data Integration
Resource Routing in ExpressionEngine
Crawl optimization - ( How to optimize to increase crawl budget)
JavaServer Faces 2.0 - JavaOne India 2011
Seo and analytics basics
Lec5 ecom fall16_modified7_november16
Keeping Things Lean & Mean: Crawl Optimisation - Search Marketing Summit AU
Single page applications the basics
Beyond PrettyFaces - Einführung in Rewrite
Ad

Recently uploaded (20)

DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
sap open course for s4hana steps from ECC to s4
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Approach and Philosophy of On baking technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
The AUB Centre for AI in Media Proposal.docx
NewMind AI Weekly Chronicles - August'25 Week I
sap open course for s4hana steps from ECC to s4
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
20250228 LYD VKU AI Blended-Learning.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Electronic commerce courselecture one. Pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf
Encapsulation_ Review paper, used for researhc scholars
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Approach and Philosophy of On baking technology
Understanding_Digital_Forensics_Presentation.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

PrettyFaces: SEO, Dynamic, Parameters, Bookmarks, Navigation for JSF / JSF2 (UrlRewrite)

Editor's Notes

  • #2: Thank everyone for attending Tell them who you are Tell them where you are from and some of your hobbies
  • #9: Went to Northfield Mount Hermon, and Penn State I want to start my own company Went through a few ideas with friends, landed on scrumshark I&apos;m talking about this because... scrumshark started prettyfaces
  • #17: Client Facing Applications You&apos;ve got a stunning user interface, but your URLs are ugly... put in the extra effort