In the beginning of J2EE, the JSP development model was invented to ease the design of web pages. It allowed the separation of the presentation from the application logic. They had to be mixed only when using servlets.
The previous development model missed a useful concept of reusability and maintenance. So, the Apache Group offered Struts, a Model View Controller (MVC) framework, which soon became the de facto standard for frontend development. It is still in use in a lot of projects that started in the early J2EE years.
The Java Community Process (JCP) recognized the demand for standardization and developed JSF some years later.
The JSF concept uses the existing servlet and JSP implementations, and adds a modern ...