Java EE 6:JSF 与 Servlet + JSP。我应该费心学习 JSF 吗?
Posted
技术标签:
【中文标题】Java EE 6:JSF 与 Servlet + JSP。我应该费心学习 JSF 吗?【英文标题】:Java EE 6: JSF vs Servlet + JSP. Should I bother learning 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
。甚至不确定那是什么意思?提前致谢。
【问题讨论】:
【参考方案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:好吧,看看你附近的工作趋势。选择问得最多和/或报酬最高的那个。您总是可以在私人/业余时间学习其他框架。
@Harry: balusc.blogspot.com/2009/09/…【参考方案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。
【讨论】:
以上是关于Java EE 6:JSF 与 Servlet + JSP。我应该费心学习 JSF 吗?的主要内容,如果未能解决你的问题,请参考以下文章