JSP和Facelets有什么区别?

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

相反,我读到了Facelets,一个新的视图定义框架(正如本教程中所描述的)。 我在互联网上搜索了一下,以澄清JSP和Facelets之间的区别,我发现这篇文章给了我很多帮助(特别是BalusC的回答 )。 但这些术语对我来说仍然有点不清楚。

JSP和Facelets有什么区别? Facelets是否会取代JSP,或者它只是一种适用于JSF的技术(如果它是后者,为什么)? 如果它们不同,我应该何时使用它们?

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

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

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

如果您根本不使用JSF,则无需使用Facelets。 在这种情况下,您可以使用JSP。 或者很少有其他模板框架,如FreeMarker和Velocity。 而且,一些Web框架定义了自己的标记,就像Struts2一样。 因此,如果您决定使用Struts,那么使用Struts标记是可行的方法。