I know basic stuff like, what are beans, jsp, servlet, jsf and how this stuff should work together. I know how to make basic jsp page with database query for example. Now I need to know what is the best path to learn all this stuff.

My plan is to learn in this order: 

1. jsp (including persistance and JSTL)
2. servlets + beans
3. jsf
4. The jump to frameworks (hibernate, struts, spring, etc)

Also I'm not exactly sure about JSF, is it a must to make great pages or is it just a convenience to know?