【问题标题】:Java EE 6: JSF vs Servlet + JSP. Should I bother learning JSF?Java EE 6:JSF 与 Servlet + JSP。我应该费心学习 JSF 吗?
【发布时间】:2011-02-11 15:59:47
【问题描述】:

我正在尝试通过阅读http://java.sun.com/javaee/6/docs/tutorial/doc/gexaf.html 来熟悉 Java EE 6。我对 JSF 的使用有点困惑。
通常,我开发 Web 应用程序的方式是,Servlet 将充当控制器,而 JSP 将充当 MVC 模型中的视图。那么 JSF 会尝试替换这种结构吗?以下是上述教程的引用:

Servlet 最适合面向服务的 App 和面向表示的 App 的控制功能,如调度请求
JSF 和 Facelet 更适合生成 XHTML 之类的标记,通常用于面向表示的 App

不确定我是否理解上面的引述,他们没有很好地解释什么是面向服务和面向演示的。

JavaServer Faces 应用程序可以将 HTTP 请求映射到特定于组件的事件处理,并将组件作为服务器上的有状态对象进行管理。

任何知识渊博的 Java 开发人员都可以给我一个关于 JSF、JSP 和 Servlet 的快速概述吗?我将它们全部集成,还是基于应用程序单独使用它们?如果是这样,那么与 Servlet 和 JSP 相比,什么样的应用程序使用 JSF

JavaServer Faces 应用程序可以将 HTTP 请求映射到特定于组件的事件处理,并将组件作为服务器上的有状态对象进行管理。

听起来像是 servlet 可以做什么,但不确定 manage components as stateful objects on the server。甚至不确定那是什么意思?提前致谢。

【问题讨论】:

    标签: java jsp jsf servlets jakarta-ee


    【解决方案1】:

    JSF 提供了一个具有多种职责的抽象层,但最重要的是,它处理 HTML 表单的所有杂乱细节以及在网页和 Java POJO bean(getX、setX 方法)之间来回传输数据,这是出了名的难做对。

    它还提供导航,并且在 Java EE 6 的最新版本中提供了基本的 AJAX 支持,允许在用户输入数据时简单地更新网页。

    您可能会发现将其视为一种避免自己编写 JavaScript 的方法更容易。

    【讨论】:

    • 在过去一年半的时间里,Javascript 在性能方面变得如此之快。而且好像你只是在这些趋势的开始,现在随着 html5 的发展,我们真的要远离 javascript 吗?
    • 他没有说要远离 JavaScript。将 JSF 与像 Richfaces 或 Icefaces 这样的不错的组件库一起使用意味着您自己编写的 JS 代码会少很多。
    【解决方案2】:

    在 JSF 中使用一个特定的 Servlet(Faces Servlet)来处理所有传入的请求并将它们分派给适当的 bean。

    JSF是一个基于组件的MVC框架,而JSP是一种视图技术。
    您可以将 JSP 与 JSF 结合使用,尽管 Facelets 是首选的视图技术。

    【讨论】:

      【解决方案3】:

      JSF 基本上使您能够开发仅包含模型对象(JavaBean)和视图(JSP/XHTML 页面)的 Web 应用程序。使用“plain vanilla”JSP/Servlet,您必须引入大量代码来控制、预处理、后处理、收集数据、验证、转换、侦听等 HTTP 请求和响应。然后我不是在谈论将它重构到高度(抽象)程度,以便您也可以像 JSF 一样结束(每个用例只有一个 JavaBean 类和一个 JSP/XHTML 页面)。

      我在此之前已经发布了有关该主题的更详细答案:What is the difference between JSF, Servlet and JSP?

      【讨论】:

      • 对不起,我应该在发帖之前看看。一定会读你的帖子。但是从我现在阅读的内容来看。 JSF 更像是一个框架,它对开发人员隐藏了许多实现,在某种程度上,它比 Servlet/JSP 好一点。我说的对吗?
      • JSP/Servlet 只是用于开发 Java Web 应用程序的 basic/core/buildstone 技术。任何基于 Java 的 MVC 框架都运行在 JSP/Servlet API 之上,JSF 也是如此。 JSF 提供了FacesServlet(是的,它是一个servlet!),您只需在web.xml 中定义一次。然后,您可以仅使用模型对象和视图来开发/运行 JSF。
      • 他们确实是竞争对手。然而,Spring MVC 可用的组件库不如 JSF 那么多。
      • 请注意“Spring”!=“Spring MVC”。 Spring 框架有很多,不仅仅是 Spring MVC。关于 Spring MVC 与 JSF:好吧,看看你附近的工作趋势。选择问得最多和/或报酬最高的那个。您总是可以在私人/业余时间学习其他框架。
      【解决方案4】:

      JSF 框架旨在简化基于 Web 的用户界面的开发集成。正如@bozho 所说,您可以混合使用 JSP 和 JSF。然而,JSF 中的“视图”组件是 facelets - 它可以被视为小的 UI 小部件,在 DHTML 样式和 JavaScript 事件生成和回调方面或多或少是自包含的。

      “我应该费心学习.. 吗?”

      不确定。尽管 JSF 在过去 5 年里(至少在理论上)存在,但我还没有看到过这么大的发展。

      【讨论】:

      • 有趣的一点,想知道 Java EE 6 是否可以为 JSF 带来一些动力。
      【解决方案5】:

      如果您喜欢 XML,请选择 JSF。如果您是 actionlistener 粉丝 doPost、doGet 等选择 Servlet 和 JSP。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-01
        • 2014-07-05
        • 2013-05-18
        • 2011-11-03
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多