A Java Server Faces (JSF) application, like any web application, presents a dynamically controlled sequence of screens through the user's web browser. Forms in the web screen can have widgets that the user can use to send data to the application. The data is sent when the user clicks on a form button. The application can respond by sending a new screen to the browser. An example sorting application can be run here.
JSF has these parts:
Some earlier web technologies intermingle HTML and code from programming languages such as Java. JSF keeps different languages in different files. This is an important separation of concerns benefit. It allows developers with different skills to work with languages appropriate to their skills.