JavaServer Faces technology is a server-side user interface component framework for Java technology-based web applications, its includes
- A set of APIs for representing UI components and managing their state, handling events and input validation, defining page navigation, supporting internationalization and accessibility and providing extensibility for all these features.
- A JavaServer Pages (JSP) custom tag library for expressing JavaServer Faces UI components within a JSP page and for wiring components to server-side objects
The well-defined programming model and tag libraries significantly ease the burden of building and maintaining web applications with server-side UIs. Here is the model:

One of the greatest advantages of JavaServer Faces technology is that it offers a clean separation between behavior and presentation. Web applications built using JSP technology achieve this separation in part. However, a JSP application cannot map HTTP requests to component-specific event handling nor manage UI elements as stateful objects on the server, as a JavaServer Faces application can. JavaServer Faces technology allows you to build web applications that implement the finer-grained separation of behavior and presentation that is traditionally offered by client-side UI architectures. The separation of logic from presentation also allows each member of a web application development team to focus on his or her piece of the development process, and it provides a simple programming model to link the pieces.
Another important goal of JavaServer Faces technology is to leverage familiar UI-component and web-tier concepts without limiting you to a particular scripting technology or markup language. Although JavaServer Faces technology includes a JSP custom tag library for representing components on a JSP page, the JavaServer Faces technology APIs are layered directly on top of the Servlet API.
Most importantly, JavaServer Faces technology provides a rich architecture for managing component state, processing component data, validating user input, and handling events.
For the most part, a JavaServer Faces application is like any other Java web application. A typical JavaServer Faces application includes the following pieces:
- A set of JSP pages (although you are not limited to using JSP pages as your presentation technology)
- A set of backing beans, which are JavaBeans components that define properties and functions for UI components on a page
- An application configuration resource file, which defines page navigation rules and configures beans and other custom objects, such as custom components
- A deployment descriptor (a web.xml file)
- Possibly a set of custom objects created by the application developer. These objects might include custom components, validators, converters, or listeners
- A set of custom tags for representing custom objects on the page