Within the Java Platform, Enterprise Edition 5 (Java EE 5),
technologies such as JSP and Servlet are stand-alone technologies. You could, if you wanted to,
create an application using only servlets or only JSP pages. JSF is different because it is a supporting
technology. You use it in conjunction with JSP pages, servlets, or other presentation
technologies.

The primary design pattern of JSF is the Model-View-Controller (MVC)
pattern. As you saw in Model
2 Architecture, MVC separates an application architecture into
three categories of components:
model, view, and controller. The model is the abstraction of all
the domain data in the system. It is the bank account in a banking application, or a
shopping cart in an e-commerce system. The view is the visualization of the model. In a web
application, the view consists of the HTML pages and the components that create the HTML pages
sent to web browsers, the Wireless Application Protocol (WAP) pages sent to mobile
devices, or the UI components sent to a dedicated client. The controller is the set of components
that manage the communications between model and view.

You can create
user interfaces with JSP. In fact, JSP was designed to make the view component of a web
application easy to create and manage. It is also possible, although not as easy, to create
UIs with servlets. However, combining JSF with JSP or Servlet technology makes UI creation—and
integration of thecmodel, view, and controller—easier by f ar. JSF brings a
component-based model to web application development that is similar to the model that has been used in
stand-alone GUI
applications for years.

To use JSF with servlets, you use the components that make up
JSF directly; that is, within your servlet, you explicitly create and use instances of UI
component classes. The JSF implementation
includes a tag library of custom tags, similar to the JSTL , that you can use with
JSP to easily create JSF-enabled applications.