JSF vs Facelets vs JSP

时间:2011-01-27 11:26:54

标签: java jsp jsf

对于Java Server Faces 与所谓的 facelets 之间的具体区别,我似乎无法得到明确的答案。谁能给我一个明确的答案?!?

另外,我知道JSF或JSP可用于创建动态网页,但两个看似相互冲突的细节让我感到困惑。我听说过以下两种情况:

  1. JSF是JSP的替代品;以及

  2. JSF和JSP构成了Java的Web层MVC范例中 View 的不同部分

  3. 那是哪个?逻辑决定它几乎肯定不能两者兼得!

4 个答案:

答案 0 :(得分:126)

  • JSF是基于MVC模式的Web UI的标准化Java框架
  • JSP是一种(更老的)标准,用于从模板生成网页 - 这些可以在JSF应用程序中用作View,但也与JSF分开使用。
  • Facelets是基于纯XML模板(无scriptlet)的替代视图技术,它是在JSF标准的第2版中引入的。它们只能在JSF应用程序中使用。

鉴于此,让我们来看看你的冲突陈述:

  

JSF是JSP的替代品;和

不完全正确,因为JSF可以将JSP用于其视图(并且必须在JSF 2之前)。但是,使用Facelets的JSF应用程序可以被视为基于JSP的技术的替代品。

  

JSF和JSP构成了Java的Web层MVC范例中View的不同部分

完全错误 - JSF涵盖整个MVC模式(尽管它可以与EJB重叠,因为它们都基于可以在同一个类中混合的注释)。

答案 1 :(得分:10)

来自Wikipedia article(JSF)

  

JSF 是基于组件驱动的UI设计模型的请求驱动的MVC web 框架,使用称为视图模板或 Facelets 视图的XML文件。

JSF是Web框架,Facelet是JSF的视图模板

来自Wikipedia article(JSP)

  

JavaServer Pages( JSP )是一种Java技术,可帮助软件开发人员基于HTML,XML动态生成网页,

另请参阅此主题Difference between jsf and jsp

答案 2 :(得分:5)

Java Server Pages(JSP)是一种Java技术,它使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面。 JSP技术将用户界面与内容生成分开,使设计人员能够在不改变底层动态内容的情况下更改整体页面布局。

Facelets 是第一个为 JSF(Java Server Faces)设计的非JSP页面声明语言,与JSP相比,它为JSF开发人员提供了更简单,更强大的编程模型。它解决了JSP中用于Web应用程序开发的不同问题。

这是一个比较scriplets和facelets特征的表格:

enter image description here Source

答案 3 :(得分:3)

我一直在寻找同一个问题的答案。 我发现这些链接非常有用:

JSP应用程序模型的示例: http://netbeans.org/kb/docs/javaee/ecommerce/design.html#architecture

基本的JSF概念,一些例子: http://netbeans.org/kb/docs/javaee/ecommerce/conclusion.html#framework