JSF vs Facelets vs JSP

Pam*_*Pam 107 java jsf jsp

对于Java Server Faces与所谓的facelets之间的具体区别,我似乎无法得到明确的答案.任何人都可以给我一个明确的答案吗?!?

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

  1. JSF是JSP的替代品; 和

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

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

Mic*_*rdt 128

  • 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重叠,因为它们都基于可以在同一个类中混合的注释).

  • 啊......所以:FaceletServlet是控制器,Facelet是XHTML视图,模型是bean.最后三个问题:(1)我假设,与servlet一样,必须将FaceletServlet子类化并覆盖服务(HttpRequest,HttpResponse)方法,是吗?(2)最佳实践是否为每个网页指定1个FaceletServlet?我无法想象它的任何其他方式!(3)模型是@ManagedBean(EJB),JavaBean还是可以是任何POJO?谢谢! (4认同)
  • @Pam:1 + 2)您通常不会直接在JSF应用程序中处理servlet.相反,您可以在faces-config.xml中进行配置,并在各种类上进行注释,从而控制FacesServlet的功能.3)@ManagedBean是一个特定于JSF的注释.从JEE 6开始,您也可以直接使用EJB(具有不同的注释),但现在两者都是基于JavaBean标准的POJO.如果您不想使用注释,可以在faces-config.xml中声明托管bean,但需要告诉JSF它们在某处*. (3认同)
  • @Pam:不,"scriptlets"是指嵌入在JSP中的java代码片段.长期以来一直不赞成这些,标签库和EL作为更清洁的替代品.Facelet标准完全消除了它们.支持bean(或承担其角色的EJB)仍然是基于Facelets的JSF应用程序的一部分. (2认同)

小智 10

来自维基百科的文章(JSF)

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

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

来自维基百科的文章(JSP)

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

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


Yst*_*ter 5

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

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

这是一个比较scriplets和facelets功能的表:

在此输入图像描述 资源