In a nutshell, JSP is suitable for small web projects and JSF is best for large scale enterprise projects.

JSP is an older technology … but it is still viable for smaller web apps. I like to use it for training since it is very similar to PHP. Most Java newbies can pick it up with no problem because it is simple and straight-forward.

Think of JSP as your low-end, economy car. It will get you to your destination but no special bells and whistles. It is ike flying “economy/coach” class.

If you are building a modern, large-scale, enterprise app then I’d recommend JSF. The framework provides data binding, validation, bean support etc.

Think of JSF as your luxury vehicle. It will get you to your destination in style … however with additional up-front luxury costs. It is like flying “first class”.

Hopefully this helps.