SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Java EE 8 Web Frameworks
A Look at JavaServer Faces vs MVC
Josh Juneau
About Me
• Member of JSF 2.3 (JSR 372) EG
• Member of JSR 378 (Portlet 3.0 Bridge) EG
• Developer/Analyst/DBA @ Fermilab
• Apress Author
• OTN/Java Magazine Contributor
• Member of CJUG
• Java EE Guardians
Agenda
• Overview of JavaServer Faces & Demo
• Overview of MVC & Demo
• Feature Comparison
• JSF 2.3 Feature Overview
• Java EE 8 Overall Status
MVC Architecture
• Model = Data
• View = UI
• Controller = Business Logic
JavaServer Faces Overview
JavaServer Faces technology establishes the standard
for building server-side user interfaces for Java EE.
• An API for representing UI components and managing
their state; handling events, server-side validation, and
data conversion; defining page navigation; supporting
internationalization and accessibility; and providing
extensibility for all these features
• JavaServer Faces (JSF) custom tag libraries for
expressing UI components within a view and for wiring
components to server-side objects
JavaServer Faces Overview
The well-defined programming model and tag libraries
significantly ease the burden of building and maintaining web
applications with server-side UIs. With minimal effort, you can:
• Drop components onto a page by adding component tags
• Wire component-generated events to server-side application
code
• Bind UI components on a page to server-side data
• Construct a UI with reusable and extensible components
• Save and restore UI state beyond the life of server requests
JSF Models
Data tier to work with entity classes (POJOs that
map to database tables) to work with the
underlying database from within a Java EE
application.
• EJBs…no…not J2EE!!!!
• JAX-RS
JSF Views
• Tree of Components
• Facelets or HTML
• Expression Language
• Mix with JSTL and other tab libraries, as needed
• Component Libraries
JSF Views
JSF Data Validation
• Bean Validation
• Faces Validator
JSF Controllers
• Business logic - FacesServlet
• CDI Scopes…No More JSF @ManagedBean
• SessionScoped, ApplicationScoped,
ViewScoped, RequestScoped,
ConversationScoped, FlowScoped,
Dependent, Singleton
• Contextual…State Managed Across Requests
JSF Typical Form Submit
Procedure
• User completes form entry by populating form
components.
• User clicks a commandButton, which invokes a
server-side method, and the CDI bean values
are submitted to FacesServlet for processing.
• Action method performs its work and then
returns control to FacesServlet for navigation.
JSF Lifecycle
• Restore View Phase
• Apply Request Values Phase
• Process Validations Phase
• Update Model Values Phase
• Invoke Application Phase
• Render Response Phase
JSF Lifecycle
JSF Ajax Support
• f:ajax for invoking server-side functionality
• Many third-party UI frameworks
JSF
JSF in Action!
JSR 371: MVC 1.0
https://ozark.java.net/
• Action-oriented framework layered on top of JAX-RS
• Manual controller logic…you control your own destiny!
• No UI Components
• You choose your front end technology
MVC 1.0
Models
Utilize entity classes for data, or store into CDI bean
Two ways to work with models:
• javax.mvc.Models class
• CDI-Based Models
MVC 1.0
Views
ViewEngine Used to Merge Model and View
• Utilize a number of different view technologies
• Ozark Ships with 3 Implementations
• Views reside within WEB-INF/views folder
MVC 1.0
Views
MVC 1.0
Validating Data
• Manual Validation
• Bean Validation
MVC 1.0
Controllers
• Controls the request-processing for an MVC
application.
• JAX-RS Implementation
• Class annotated with @Controller either at class level
or method level.
• Must be CDI Managed
• Possible to create hybrid classes (@Controller at
method level)
MVC 1.0
Controllers
• Four return types: String, void, Response, Viewable
• String: returns path to view
• void: requires @javax.mvc.View annotation
• Response: typical javax.ws.rs.core.Response, providing
access to the response
• Viewable: javax.mvc.Viewable containing information ab
the view and how to process
• Default response type text/html, but can be modified with
@Produces
MVC 1.0
Controllers
MVC 1.0
Views to Controllers - Parameters
Parameters handled via annotations in Controller:
• @PathParam: Used to extract path parameters
• @FormParam: Used to process fields from form
• @QueryParam: Used when parameters appended to
URL
• @BeanParam: Used to inject various request
parameters into a bean
MVC 1.0
Views - Redirecting Responses
• JAX-RS
return
Response.seeOther(URI.create(“redirectView”)).build()
• MVC
return “redirect:redirectView”
@RedirectScoped Annotation
• Bean will span at most two requests
• Must be Serializable
MVC 1.0
Exception Handling
• Can be applied via try/catch at method level or
globally
return Response.status(BAD_REQUEST).entity("error.jsp").build();
• ExceptionMapper class
MVC 1.0
Security
• Utilize ${mvc.csrf.name} and ${mvc.csrf.token} in
form
• javax.mvc.security.CsrfProtection property
• @CsrfValid Annotation at Method Level
MVC 1.0
MVC in Action!
JSF or MVC?
JSF MVC
• Component Based
• Controller Logic
Automates Processing
• Facelets
• Rapid Development
• Works well with REST
• Stateful…remains across
requests
• Action Based
• Layered on Top of JAX-RS
• Manual Validations/
Conversions
• Many Different View Options
• Fine Control Request/
Response
• Great fit for REST
• No State Across Requests
JSR 372: JSF 2.3
Not forgotten with Java EE 8
While scope of update is not very large, new features
and enhancements will help continue making JSF
relevant in today’s world.
Thanks to the OmniFaces folks for adding a number of
features to JSF.
JSF 2.3 in Java EE 8
• Two feature drivers: Oracle & Community
• Feature clean-up
• Small new feature set based upon community requests
• Mature standard for building Java EE applications
JSF 2.3 - Oracle Focus
Tie up loose ends:
• Specification clarifications
• CDI Alignment
• Others
Small Scale New Features:
• CDI Managed Beans Only
• Ajax Method Invocation
• Multi-component Validation
JSF 2.3 - Community Focus
• JSON Ajax Component Rendering
• Stateless enhancements
• GET Enhancements
• Push Support
JSF 2.3 New Features
(Implemented)
• Inject ViewMap
@ViewMap
@Inject
Map viewMap;
• Inject UiViewRoot
@Inject
UIViewRoot viewRoot;
• #1332 - Let CDI handle #{view}
• #1331 - Let CDI handle #{application}
• #1254 - contracts attribute too restrictive.
JSF 2.3 New Features
(Implemented - ctd)
• #1328 - Let CDI handle #{session} EL resolving
• #1325 - Let CDI handle #{applicationScope}
• #1311 - Let CDI handle #{facesContext} EL resolving
• #1323 - Support @Inject for the applicationMap
@ApplicationMap
@Inject
Map applicationMap;
• #1322 - Simplify #{externalContext} to use
ExternalContextProducer
JSF 2.3 New Features
(Implemented - ctd)
• #1309 - Support @Inject for ExternalContext
@Inject ExternalContext externalContext;
• #527 - Support @Inject for FacesContext
@Inject FacesContext facesContext;
• javax.faces.bean.ManagedProperty Replacement
JSF 2.3 New Features
(Implemented - ctd)
• #1396 - f:socket for SSE and WebSocket
http://jj-blogger.blogspot.com/2016/02/a-look-at-
upcoming-jsf-23-push-support.html
Learn More
What Is The CJUG?
Chicago Java Users Group is dedicated to the
helping you learn and network.
• Technology community second to none.
• Learn and contribute to Java / JVM ecosystem
• Mentorship and career opportunities
• Have fun and build cool things
Java EE Guardians
Join us and help move Java EE into the future!
Contact
Josh Juneau
- Java EE 7 Recipes
- Introducing Java EE 7
- JavaServer Faces: Introduction By Example
- Java 8 Recipes
Twitter: @javajuneau
Read On!

Mais conteúdo relacionado

Mais procurados

Spring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen HoellerSpring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen Hoeller
ZeroTurnaround
 

Mais procurados (20)

Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Spring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen HoellerSpring 4 on Java 8 by Juergen Hoeller
Spring 4 on Java 8 by Juergen Hoeller
 
50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes50 New Features of Java EE 7 in 50 minutes
50 New Features of Java EE 7 in 50 minutes
 
Spring 3 MVC CodeMash 2009
Spring 3 MVC   CodeMash 2009Spring 3 MVC   CodeMash 2009
Spring 3 MVC CodeMash 2009
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Java EE Introduction
Java EE IntroductionJava EE Introduction
Java EE Introduction
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Java EE 8: On the Horizon
Java EE 8:  On the HorizonJava EE 8:  On the Horizon
Java EE 8: On the Horizon
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
Spring Portlet MVC
Spring Portlet MVCSpring Portlet MVC
Spring Portlet MVC
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
JSF basics
JSF basicsJSF basics
JSF basics
 
Spring Framework Rohit
Spring Framework RohitSpring Framework Rohit
Spring Framework Rohit
 
스프링 프레임워크
스프링 프레임워크스프링 프레임워크
스프링 프레임워크
 

Semelhante a Java EE 8 Web Frameworks: A Look at JSF vs MVC

Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
Rohit Kelapure
 
Introduction to ASP.Net MVC
Introduction to ASP.Net MVCIntroduction to ASP.Net MVC
Introduction to ASP.Net MVC
Sagar Kamate
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
Ludovic Champenois
 

Semelhante a Java EE 8 Web Frameworks: A Look at JSF vs MVC (20)

JSF2
JSF2JSF2
JSF2
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUG
 
MVC 1.0 als alternative Webtechnologie
MVC 1.0 als alternative WebtechnologieMVC 1.0 als alternative Webtechnologie
MVC 1.0 als alternative Webtechnologie
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with Microservices
 
Java EE8 - by Kito Mann
Java EE8 - by Kito Mann Java EE8 - by Kito Mann
Java EE8 - by Kito Mann
 
Asp.net mvc basic introduction
Asp.net mvc basic introductionAsp.net mvc basic introduction
Asp.net mvc basic introduction
 
Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010Contextual Dependency Injection for Apachecon 2010
Contextual Dependency Injection for Apachecon 2010
 
Mvc fundamental
Mvc fundamentalMvc fundamental
Mvc fundamental
 
Glassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionGlassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE Introduction
 
Introduction to j2 ee frameworks
Introduction to j2 ee frameworksIntroduction to j2 ee frameworks
Introduction to j2 ee frameworks
 
Introduction to ASP.Net MVC
Introduction to ASP.Net MVCIntroduction to ASP.Net MVC
Introduction to ASP.Net MVC
 
AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7AAI-1713 Introduction to Java EE 7
AAI-1713 Introduction to Java EE 7
 
AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7AAI 1713-Introduction to Java EE 7
AAI 1713-Introduction to Java EE 7
 
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)InterConnect 2016 Java EE 7 Overview (PEJ-5296)
InterConnect 2016 Java EE 7 Overview (PEJ-5296)
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming model
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)
 
Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013Getting started with MVC 5 and Visual Studio 2013
Getting started with MVC 5 and Visual Studio 2013
 
Max Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next StepsMax Yekaterynenko - Magento Architecture, Next Steps
Max Yekaterynenko - Magento Architecture, Next Steps
 
Java EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseConJava EE 6, Eclipse @ EclipseCon
Java EE 6, Eclipse @ EclipseCon
 

Mais de Josh Juneau (8)

Migrating to Jakarta EE 10
Migrating to Jakarta EE 10Migrating to Jakarta EE 10
Migrating to Jakarta EE 10
 
Jakarta EE Recipes
Jakarta EE RecipesJakarta EE Recipes
Jakarta EE Recipes
 
Jakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech TalkJakarta EE and MicroProfile Tech Talk
Jakarta EE and MicroProfile Tech Talk
 
Jakarta EE and MicroProfile - EclipseCon 2020
Jakarta EE and MicroProfile - EclipseCon 2020Jakarta EE and MicroProfile - EclipseCon 2020
Jakarta EE and MicroProfile - EclipseCon 2020
 
Jakarta EE 8: Overview of Features
Jakarta EE 8: Overview of FeaturesJakarta EE 8: Overview of Features
Jakarta EE 8: Overview of Features
 
Lightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfileLightweight Java EE with MicroProfile
Lightweight Java EE with MicroProfile
 
Java EE 7 Recipes
Java EE 7 RecipesJava EE 7 Recipes
Java EE 7 Recipes
 
Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014Java EE 7 Recipes for Concurrency - JavaOne 2014
Java EE 7 Recipes for Concurrency - JavaOne 2014
 

Último

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 

Último (20)

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 

Java EE 8 Web Frameworks: A Look at JSF vs MVC

  • 1. Java EE 8 Web Frameworks A Look at JavaServer Faces vs MVC Josh Juneau
  • 2. About Me • Member of JSF 2.3 (JSR 372) EG • Member of JSR 378 (Portlet 3.0 Bridge) EG • Developer/Analyst/DBA @ Fermilab • Apress Author • OTN/Java Magazine Contributor • Member of CJUG • Java EE Guardians
  • 3. Agenda • Overview of JavaServer Faces & Demo • Overview of MVC & Demo • Feature Comparison • JSF 2.3 Feature Overview • Java EE 8 Overall Status
  • 4. MVC Architecture • Model = Data • View = UI • Controller = Business Logic
  • 5. JavaServer Faces Overview JavaServer Faces technology establishes the standard for building server-side user interfaces for Java EE. • An API for representing UI components and managing their state; handling events, server-side validation, and data conversion; defining page navigation; supporting internationalization and accessibility; and providing extensibility for all these features • JavaServer Faces (JSF) custom tag libraries for expressing UI components within a view and for wiring components to server-side objects
  • 6. JavaServer Faces Overview The well-defined programming model and tag libraries significantly ease the burden of building and maintaining web applications with server-side UIs. With minimal effort, you can: • Drop components onto a page by adding component tags • Wire component-generated events to server-side application code • Bind UI components on a page to server-side data • Construct a UI with reusable and extensible components • Save and restore UI state beyond the life of server requests
  • 7. JSF Models Data tier to work with entity classes (POJOs that map to database tables) to work with the underlying database from within a Java EE application. • EJBs…no…not J2EE!!!! • JAX-RS
  • 8. JSF Views • Tree of Components • Facelets or HTML • Expression Language • Mix with JSTL and other tab libraries, as needed • Component Libraries
  • 10. JSF Data Validation • Bean Validation • Faces Validator
  • 11. JSF Controllers • Business logic - FacesServlet • CDI Scopes…No More JSF @ManagedBean • SessionScoped, ApplicationScoped, ViewScoped, RequestScoped, ConversationScoped, FlowScoped, Dependent, Singleton • Contextual…State Managed Across Requests
  • 12. JSF Typical Form Submit Procedure • User completes form entry by populating form components. • User clicks a commandButton, which invokes a server-side method, and the CDI bean values are submitted to FacesServlet for processing. • Action method performs its work and then returns control to FacesServlet for navigation.
  • 13. JSF Lifecycle • Restore View Phase • Apply Request Values Phase • Process Validations Phase • Update Model Values Phase • Invoke Application Phase • Render Response Phase
  • 15. JSF Ajax Support • f:ajax for invoking server-side functionality • Many third-party UI frameworks
  • 17. JSR 371: MVC 1.0 https://ozark.java.net/ • Action-oriented framework layered on top of JAX-RS • Manual controller logic…you control your own destiny! • No UI Components • You choose your front end technology
  • 18. MVC 1.0 Models Utilize entity classes for data, or store into CDI bean Two ways to work with models: • javax.mvc.Models class • CDI-Based Models
  • 19. MVC 1.0 Views ViewEngine Used to Merge Model and View • Utilize a number of different view technologies • Ozark Ships with 3 Implementations • Views reside within WEB-INF/views folder
  • 21. MVC 1.0 Validating Data • Manual Validation • Bean Validation
  • 22. MVC 1.0 Controllers • Controls the request-processing for an MVC application. • JAX-RS Implementation • Class annotated with @Controller either at class level or method level. • Must be CDI Managed • Possible to create hybrid classes (@Controller at method level)
  • 23. MVC 1.0 Controllers • Four return types: String, void, Response, Viewable • String: returns path to view • void: requires @javax.mvc.View annotation • Response: typical javax.ws.rs.core.Response, providing access to the response • Viewable: javax.mvc.Viewable containing information ab the view and how to process • Default response type text/html, but can be modified with @Produces
  • 25. MVC 1.0 Views to Controllers - Parameters Parameters handled via annotations in Controller: • @PathParam: Used to extract path parameters • @FormParam: Used to process fields from form • @QueryParam: Used when parameters appended to URL • @BeanParam: Used to inject various request parameters into a bean
  • 26. MVC 1.0 Views - Redirecting Responses • JAX-RS return Response.seeOther(URI.create(“redirectView”)).build() • MVC return “redirect:redirectView” @RedirectScoped Annotation • Bean will span at most two requests • Must be Serializable
  • 27. MVC 1.0 Exception Handling • Can be applied via try/catch at method level or globally return Response.status(BAD_REQUEST).entity("error.jsp").build(); • ExceptionMapper class
  • 28. MVC 1.0 Security • Utilize ${mvc.csrf.name} and ${mvc.csrf.token} in form • javax.mvc.security.CsrfProtection property • @CsrfValid Annotation at Method Level
  • 29. MVC 1.0 MVC in Action!
  • 30. JSF or MVC? JSF MVC • Component Based • Controller Logic Automates Processing • Facelets • Rapid Development • Works well with REST • Stateful…remains across requests • Action Based • Layered on Top of JAX-RS • Manual Validations/ Conversions • Many Different View Options • Fine Control Request/ Response • Great fit for REST • No State Across Requests
  • 31. JSR 372: JSF 2.3 Not forgotten with Java EE 8 While scope of update is not very large, new features and enhancements will help continue making JSF relevant in today’s world. Thanks to the OmniFaces folks for adding a number of features to JSF.
  • 32. JSF 2.3 in Java EE 8 • Two feature drivers: Oracle & Community • Feature clean-up • Small new feature set based upon community requests • Mature standard for building Java EE applications
  • 33. JSF 2.3 - Oracle Focus Tie up loose ends: • Specification clarifications • CDI Alignment • Others Small Scale New Features: • CDI Managed Beans Only • Ajax Method Invocation • Multi-component Validation
  • 34. JSF 2.3 - Community Focus • JSON Ajax Component Rendering • Stateless enhancements • GET Enhancements • Push Support
  • 35. JSF 2.3 New Features (Implemented) • Inject ViewMap @ViewMap @Inject Map viewMap; • Inject UiViewRoot @Inject UIViewRoot viewRoot; • #1332 - Let CDI handle #{view} • #1331 - Let CDI handle #{application} • #1254 - contracts attribute too restrictive.
  • 36. JSF 2.3 New Features (Implemented - ctd) • #1328 - Let CDI handle #{session} EL resolving • #1325 - Let CDI handle #{applicationScope} • #1311 - Let CDI handle #{facesContext} EL resolving • #1323 - Support @Inject for the applicationMap @ApplicationMap @Inject Map applicationMap; • #1322 - Simplify #{externalContext} to use ExternalContextProducer
  • 37. JSF 2.3 New Features (Implemented - ctd) • #1309 - Support @Inject for ExternalContext @Inject ExternalContext externalContext; • #527 - Support @Inject for FacesContext @Inject FacesContext facesContext; • javax.faces.bean.ManagedProperty Replacement
  • 38. JSF 2.3 New Features (Implemented - ctd) • #1396 - f:socket for SSE and WebSocket http://jj-blogger.blogspot.com/2016/02/a-look-at- upcoming-jsf-23-push-support.html
  • 40. What Is The CJUG? Chicago Java Users Group is dedicated to the helping you learn and network. • Technology community second to none. • Learn and contribute to Java / JVM ecosystem • Mentorship and career opportunities • Have fun and build cool things
  • 41. Java EE Guardians Join us and help move Java EE into the future!
  • 42. Contact Josh Juneau - Java EE 7 Recipes - Introducing Java EE 7 - JavaServer Faces: Introduction By Example - Java 8 Recipes Twitter: @javajuneau