Java Server Faces (JSF) is "Swing for server-side applications". It provides much of the plumbing for JavaServer Pages (JSP), which is used in conjunction with Servlets for developing web applications.

JSF has these parts:

JSF is well-supported by IDEs such as NetBeans and Eclipse.

There are two structures associated with a JSF application.

Some earlier web technologies intermingle HTML and code from programming languages such as Java. JSF keeps different languages in different files.

A JSF application is deployed as a WAR file with this structure:

Note that the WAR file does not include Java source files.

This is the structure that application developers work with in NetBeans:

Unlike JSF, some earlier web technologies intermingle HTML and programming language code. Disadvantages include:

Overview text.

This is the life cycle of a JSF request initiated by the browser. Everything in the above diagram is taking place on the server.

With AJAX (Asynchronous JavaScript with XMLHttpRequest) the response need not be an HTML page. It can be information used by the browser to dynamically modify its current web page. JavaScript is the language used on the browser. XMLHttpRequest is a JavaScript function for asynchronous data transfer.

More advanced JSF applications still use Java Beans for data management, and they frequently use the mechanism illustrated in the login example for navigation between web pages. In addition, JSF supports the following: