JSF vs Facelets vs JSP

2022-08-31 09:43:55

我似乎无法得到一个明确的答案,关于Java服务器面孔与所谓的面孔之间的具体区别。谁能给我一个清晰如日的答案?!?

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

  1. JSF是JSP的替代品;和

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

那么它是什么呢?从逻辑上讲,几乎可以肯定的是,它不可能两者兼而有之!


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

有鉴于此,让我们来看看你相互矛盾的陈述:

JSF是JSP的替代品;和

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

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

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


答案 2

来自维基百科条目(JSF)

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

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

来自维基百科条目(JSP)

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

另请参阅此主题 jsf 和 jsp 之间的区别