Hello, according to your questions:
First of all, a JSF applications are built on top of the
Servlet API, communicate via HTTP, and use a display technology like JSP (but not required). In addition, when we speak about JSF the following terms in mind: UI component, Renderer, Validator, Backing beans, Converters, Events and Listeners, Messages and Navigation.
RPL(Request Processing Lifecycle) -> JSF restores/creates view, translates the request parameters into GUI controls values, validates input, updates backing beans, invokes action listiners and finaly returns respons to the user.
2. And if question asked to choose to develop a quicker way to develop a web application, given JSP and JSF how should we choose?
IMHO, if you want develop your application "without bad smell" i would advise to choose JSF.
And when do we use jsf and ajax? like under what senario?
There are a lot of situations, i will try to cover some of them. When you need asynchronously communicate with server,
or any other business servises, you can send request to the server in order to retreive specific data, in other words
there is ability to send data between client and server. Another case, imagine that you have page with a lot of GUI components on it. To render this page each time when it's needed takes too much resourses, hence, to prevent updating a whole page you use Ajax that "wraped" in the components, for example.
Cheers,
Oleg.