JSP和Facelets有什么区别?

17
我刚开始阅读Java EE 6 教程,感到有些困惑!我知道 JavaServer Pages (JSP),甚至在本科期间编写了一些代码。但是,在这个教程中,我没有看到任何关于 JSP 的内容。

相反,我读到了 Facelets,一种新的视图定义框架(在本教程中是这样描述的)。我在互联网上搜索了一下 JSP 和 Facelets 之间的区别,并找到了这篇文章,对我很有帮助(尤其是 BalusC 的回答)。但是这些术语对我来说仍然有些不清楚。

JSP 和 Facelets 有什么区别?Facelets 是否将取代 JSP,或者它只是一种与 JSF 更好地配合使用的技术(如果是后者,为什么)?如果它们不同,那么我应该在何时使用它们?


1
顺便说一句:我已经改进了我的链接答案,包括更多关于JSP与Facelets的内容。请查看有关JSF的段落。 - BalusC
http://www.tugay.biz/2016/07/sorry-what-is-facelets.html - Koray Tugay
1个回答

12

正如您从教程中所读到的那样,

术语Facelets用于指JavaServerTM Faces视图定义框架,它是一种页面声明语言,专门为与JavaServer Faces技术一起使用而开发。从JavaServer Faces 2.0开始,Facelets是JavaServer Faces规范的一部分,也是构建基于JavaServer Faces的应用程序的首选演示技术。

现在,JSP是Web的标准视图技术。但是,当采用JSF作为Web框架时,JSP并不支持JSF 2.0提供的所有功能。因此,需要一些标准的视图技术来使用JSF 2.0。因此,Facelets就是这个技术。

如果您根本不使用JSF,则无需使用Facelets。在这种情况下,您可以选择使用JSP。或者还有其他几个模板框架,例如FreeMarker和Velocity。此外,一些Web框架定义了自己的标记语言,例如Struts2。因此,如果您决定使用Struts,则使用Struts标记语言是正确的方法。


为了避免混淆并且能够清晰理解,我建议你学习 JSP。在那之后,你将自然而然地能够明白。JSP 并不过时,并且在许多 Java web 应用程序中仍被用作视图技术。 - Adeel Ansari
所以,如果我理解正确的话,Facelets和JSP(以及其他标记语言)都是将数据(通过使用bean或执行其他操作)放入网页的方式,对吗?而选择使用哪种取决于框架。我说得对吗? - Alex Ntousias
2
是的,有点。为什么是“有点”呢?因为有很多框架并没有引入自己的东西,而是满足于使用JSP和他们自己的标签库。所以,JSP仍然被广泛使用。JSF等框架的情况有些不同。JSF在风格上有所不同。它以组件为单位进行操作。Tapestry是另一个框架,但我对Tapestry不太熟悉。 - Adeel Ansari
非常感谢你,Vinegar。我终于明白了!:)尽管我不明白那些存在的大量Java框架的意义....! - Alex Ntousias
1
在像Django和Rails这样的快速Web应用程序框架之后,Java社区开始考虑开发类似的东西,以便更容易地开发并有潜力缩短开发时间。因此,我们最终拥有了大量的框架。每个其他框架都是为了吸引特定类型的思维/开发人员。例如,Wicket更适合Java开发人员。其他一些则更适合设计师友好型,Tapestry就是这样。Struts2是因为Struts过于臃肿而出现的。Spring让我们的生活更轻松。据我所知,Struts是第一个Java Web框架。还有许多其他框架可供选择,选择一个确实很困难。 - Adeel Ansari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接