Kiedy używać JSP a kiedy JSF?
JSP - Jeżeli zostaniesz wrzucony w stary projekt i zmuszony do używania właśnie tego :)
Najlepiej obu nie używać, szczególnie w starszych wersjach.
JSP jest mechanizmem do dynamicznego tworzenia stron www w Javie. Generalnie dawno temu było to rozwiązanie porównywane do php. Miało to jakiś tam swój flow i zasady pracy, ale mało kto do tego się stosował i generalnie płodzono w tym różne potworki. Co pozostało po JSP to JSTL, czyli standardowa biblioteka komponentów opisywanych za pomocą języka znaczników EL. Można ją rozszerzać, co w przypadku utrzymania i rozwoju starych aplikacji jest nieocenione.
JSF jest czymś więcej niż samo JSP. JSF to SPECYFIKACJA (fanfary, owacja na stojąco), która jest opisem tworzenia UI zorientowanego na re-używalne komponenty. Sama specyfikacja zawiera dość dużo elementów opisujących przepływy w ramach aplikacji oraz trochę swojego specyficznego nazewnictwa. Domyślnie do tworzenia komponentów jest wykorzystywany JSP.