JavaServer Faces: The Fundamentals

concepcionsockSoftware and s/w Development

Aug 15, 2012 (5 years and 3 months ago)

258 views

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
applications”


is a specification and reference implementation
for a web application development framework


Components


Events


Validators


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
architecture


Support for client device independence


Standard


Huge vendor and industry support


Built
-
in UI component model (unlike JSP and
Servlet)



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

Applications

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


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
trees.


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
components


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
deployment.



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
components with events
provided


Custom components


Standard tags (JSTL) that
are non
-
UI and very basic


Custom components
through tag libraries


Struts
-
specific tag library


Only very basic, form
-
bean
-
bound components
provided

Device independence


Reader kits that provide
device independence


None



None

Error handling and
validation



Validation framework


Many predefined
validators


None


Validation framework
driven by an XML file
(validation.xml)

Scripting





Scripts can be attached to
events


All components
accessible from scripts


Embedded Java™ in the
page



Scripts written in Java
Action classes


Form data but not
components accessible

Page flow


Simple navigation file
(faces
-
config.xml)


None


Sophisticated, flexible
framework


XML file based

Session and object
management


Automatic


Manual


Manual