Before getting into the details of using the Struts-Faces library, it's necessary to give a brief overview of JSF. JSF is an application framework for creating Web-based interfaces. Similar to Struts, JSF is based on the MVC design pattern and provides a controller servlet that manages the lifecycle of application requests. In addition to that, and in contrast to Struts, JSF provides a robust user interface component model that includes support for the rendering of components and event handling. The component model enables Web application user interfaces to be easily assembled and linked to back-end business logic components. This easy-to-use component model is the main selling point behind JSF and is not offered by other frameworks. A complete review of JSF is outside the scope of this book, but is covered in the JavaServer Faces: The Complete Reference book that I co-authored.