Read a trail further down on this JSF forum entitled "not enamoured by JSF 1.1" Very interesting debate. It could either answer all your questions, or leave you as confused as I am about which framework to learn
Servlets and JSPs is the basics. It's how everything was done where there wasn't any other way to do it.
However, before frameworks came around, everyone was doing the same thing in different ways: error handling, creating custom tags, form handling, input validation, memento pattern, front controller pattern, connection pooling, and so on and so on and so on.
Anyways, Struts came along, with other frameworks, and pulled all of those things together. Struts is a great MVC framework, that builds on top of Servlets and JSPs, but does all those things every application needs to do, and it does it well, and it's all implemented by people much smarter than you and me.
But, Struts isn't perfect. And from my experience, creating a GUI, drag and drop tooling around Struts is difficult for tool developers. Plus, Struts is open source, so, the people that support and maintain it have other things to do, such as, making a living.
So, Sun came around and provided the JSF framework. I'm new to JSF, so please correct me. It does many of the things Struts does, but it's backed by Sun, who know Java pretty good, and it makes drag and drop GUI development pretty easy. Plus, it's easier to port to different technologies. For example, I did a tutorial on making a struts portlet - it was painful. The same tutorial on creating a JSF portlet was extremely simple.
From the outside looking in, it might seem like JSF is the future. I know IBM WebSphere has said "look, we supported a Struts portlet, but from now on, lets just concentrate on JSF stuff. That's where we're going to put our focus." It was that attitude from IBM that made me really thinf "sheesh, I better get familiar with this JSF stuff in a hurry."
That's the way it looks to me right now.
-Cameron McKenzie [ January 21, 2007: Message edited by: Cameron W. McKenzie ]