What are JSF, Servlet and JSP and what is difference between them?