JSF was developed integrating MVC design pattern so that applications can
be designed well with greater maintainability. To understand this fact we need
to understand what is MVC design pattern, how MVC helps to design an application
well and how can we make our web application easy to maintain.
The MVC design pattern splits an application design into three separate parts:
Model : handles data and logic.
View : handles output (presentation)
Controller: handles processing of an application.
model?s purpose is to separate model and presentation to enable
developers to set focus on their core skills and collaborate more
clearly. If you have to create many pages for presentation then you have to
concentrate only on view layer rather than model and controller layer because
you can reuse code for controller and model.
In the same way if you want to change the code for model then you typically need not to change view layer.
Controllers are used to process user actions. In this process layer model and views may be changed.
The best advantages of JSF is that it is both a Java Web user-interface standard and a framework that fits well with the Model-View-Controller (MVC) design pattern. It offers a clean separation between presentation and behavior. MVC pattern helps persons of different skill sets to work separately so tasks can be completed in parallel. UI can be created by page author using reusable UI components and business logic part can be implemented using managed beans.