Java EE 6: JSF vs Servlet + JSP. Should I bother learning JSF?

27,616

Solution 1

JSF basically enables you to develop a web application with only model objects (JavaBeans) and views (JSP/XHTML pages). With "plain vanilla" JSP/Servlet you'll have to bring in a lot of code to control, preprocess, postprocess, gather data, validate, convert, listen, etc the HTTP request and response. And then I'm not talking about refactoring it to a high (abstract) degree so that you can also end up the same way as JSF does (just a JavaBean class and a JSP/XHTML page per use case).

I've posted a more detailed answer on the subject before here: What is the difference between JSF, Servlet and JSP?

Solution 2

In JSF uses one specific Servlet (the Faces Servlet) to handle all incoming requests and dispatch them to the appropriate beans.

JSF is a component-based MVC framework, while JSP is a view technology.
You can use JSP with JSF, although Facelets is the preferred view technology.

Solution 3

JSF provide an abstraction layer with several responsibilities, but most important it handles all the messy details of HTML forms and transferring data back and forth between web pages and Java POJO beans (getX, setX methods), which is notoriously difficult to do right.

It also provides navigation and in the latest incarnation in Java EE 6 rudimentary AJAX support is available allowing for simple updates of the web page as the user inputs data.

You might find it easier to think of it as a way to avoid writing JavaScript yourself.

Solution 4

If you like XML choose JSF. In case that you are an actionlistener fan doPost,doGet etc choose Servlet and JSP.

Solution 5

JSF Framework targets to simplify development integration of web-based user interfaces. As @bozho stated you can mix JSP and JSF. However, the "view" component in JSF is facelets - which can be viewed as little UI widgets, which are more or less self contained with respect to DHTML styling and JavaScript event generation and call back.

"Should I bother learning.. ?"

Not sure. I haven't seen JSF picking up that much steam even though it was around (Atleast in theory) for last 5 years.

Share:
27,616
Thang Pham
Author by

Thang Pham

Updated on April 09, 2020

Comments

  • Thang Pham
    Thang Pham about 4 years

    I am trying to get familiar with Java EE 6 by reading http://java.sun.com/javaee/6/docs/tutorial/doc/gexaf.html. I am a bit confused about the use of JSF.
    Usually, the way I develop my Web App would be, Servlet would act like a controller and JSP would act like a View in an MVC model. So Does JSF try to replace this structure? Below are the quote from the above tutorial:

    Servlet are best suited for service-oriented App and control function of presentation-oriented App like dispatching request
    JSF and Facelet are more appropriated for generating mark-up like XHTML, and generally used for presentation-oriented App

    Not sure if I understand the above quote too well, they did not explain too well what is service-oriented vs presentation-oriented.

    A JavaServer Faces application can map HTTP requests to component-specific event handling and manage components as stateful objects on the server.

    Any knowledgeable Java developer out there can give me a quick overview about JSF, JSP and Servlet? Do I integrate them all, or do I use them separated base on the App? if so then what kind of app use JSF in contrast with Servlet and JSP

    A JavaServer Faces application can map HTTP requests to component-specific event handling and manage components as stateful objects on the server.

    Sound like what servlet can do, but not sure about manage components as stateful objects on the server. Not even sure what that mean? Thanks in advance.