JavaServer Faces (JSF) is defined as JSR 344, and the complete specification can be downloaded.
JavaServer Faces is a server-side user interface (UI) framework for Java-based web applications. JSF allows you to:
Create a web page with a set of reusable UI components following the Model-View-Controller (MVC) design pattern.
Bind components to a server-side model. This allows a two-way migration of application data with the UI.
Handle page navigation in response to UI events and model interactions.
Manage UI component state across server requests.
Provide a simple model for wiring client-generated events to server-side application code.
Easily build and reuse custom UI components.
A JSF application consists of:
A set of web pages in which the UI components are laid out.
A set of managed beans. One set of beans binds components to a server-side model (typically CDI beans) and another set acts as controller (typically EJB or CDI beans).
An optional deployment descriptor, web.xml.
An optional configuration file, faces-config.xml.
An optional set of custom objects such as converters and listeners, created by the application developer.
Facelets is the view declaration language (aka view handler) for JSF. It is the replacement for JSP, which is now retained only for backward compatibility. New features introduced in version 2 of the JSF specification, such as composite components and Ajax, are only exposed to page authors using facelets. Key benefits of facelets include ...