JavaServer Faces: The Fundamentals by x7if2H


									JavaServer Faces:
The Fundamentals
                    Compiled from
         Sun TechDays workshops
  (JSF Basics, Web-Tier Codecamp:
                 JavaServer Faces,
     Java Studio Creator; IBM RAD)
JavaServer Faces (JSF)
 is a “server side user interface component
  framework for Java™ technology-based web
 is a specification and reference implementation
  for a web application development framework
  Back-end-data integration
 is designed to be leveraged by tools
  NetBeans, RAD (Rational Application Developer),
   Eclipse, JDeveloper, etc.
Why JSF?
 MVC for web applications
 Easy to use
 Extensible Component and Rendering
 Support for client device independence
 Standard
 Huge vendor and industry support
 Built-in UI component model (unlike JSP and
Why JSF? (cont’d)

Offers finer-grained separation of behavior
 and presentation than JSP
  Component-specific event handling
  UI elements as stateful objects on the server
UI-component and Web-tier concepts
 without limiting you to a particular scripting
 technology or markup language
  Can work with any presentation technology
   including JSP
JSF is a UI Framework for Java Web
JSF Architecture
Important Basic Capabilities
 Extensible UI component model
 Flexible rendering model
 Events-based interaction model (as opposed to
  the old “request/response” model)
 Validation framework
 Basic page navigation support
 Internationalization
 Accessibility
How the JSF Specification Fits In
(prior to Facelets)
 Facelets is a powerful but lightweight page declaration
  language that is used to build JavaServer Faces views
  using HTML style templates and to build component
 Facelets features include the following:
    Use of XHTML for creating web pages
    Support for Facelets tag libraries in addition to JavaServer Faces
     and JSTL tag libraries
    Support for the Expression Language (EL)
    Templating for components and pages
Facelets (cont’d)
 Advantages of Facelets for large-scale development
  projects include the following:
    Support for code reuse through templating and composite
    Functional extensibility of components and other server-side objects
     through customization
    Faster compilation time
    Compile-time EL validation
    High-performance rendering

 In short, the use of Facelets reduces the time and
  effort that needs to be spent on development and
                                    Source: Java EE 6 Tutorial
JSF Developer Roles
Roles Definition
 Page Author
  Creates the user interface of a web application
  Familiar with markup language(s) to be used
  Assembler of prebuilt components
 Component Writer
  Creates reusable components, renderers, and libraries
  Components – Render-independent properties
  Renderers – Render-dependent properties
Roles Definition
 Application Developer
  Creates the server-side functionality of a web
   application not directly related to the user interface
  Business logic components implemented in standard
   J2EE ways (EJBs, JavaBeans, Connectors)
  Persistence tier components implemented in standard
   J2EE ways (EJBs, JDBC, Connectors)
  Model data exposed to user interface via JavaBean
   programming model
  Validator, Converter, Event handler
Roles Definition
 Tool Provider
  Creates tools to assist page authors, component writers,
   and application developers
  GUI-oriented page development tools
  IDEs to facilitate creation of components
  Application generators (from high level description)
  Web application frameworks that utilize JSF
   components for their user interface
 JSF Implementor
  Provides runtime environment to execute JSF webapps
   J2EE SDK 1.4
Criteria for choosing Struts or
JavaServer Faces
                      JSF                           JSP                          JSP and Struts

Components            Rich UI-data-bound           Standard tags (JSTL) that   Struts-specific tag library
                      components with events        are non-UI and very basic    Only very basic, form-
                      provided                      Custom components           bean-bound components
                      Custom components            through tag libraries        provided
Device independence   Reader kits that provide     None                        None
                      device independence

Error handling and    Validation framework         None                        Validation framework
validation            Many predefined                                           driven by an XML file
                      validators                                                 (validation.xml)

Scripting             Scripts can be attached to   Embedded Java™ in the       Scripts written in Java
                      events                        page                         Action classes
                      All components                                            Form data but not
                      accessible from scripts                                    components accessible

Page flow             Simple navigation file       None                        Sophisticated, flexible
                      (faces-config.xml)                                         framework
                                                                                 XML file based
Session and object    Automatic                    Manual                      Manual

To top