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
A JavaServer Faces application that includes JSP pages also uses the standard tag libraries defined by JavaServer Faces technology for representing UI components and other objects on the page.