为什么facelets优于JSP作为JSF 2.0的视图定义语言



我看到,从JSF 2.0开始,facelets视图定义语言是首选的视图定义语言,而不是已被弃用为遗产后回来的JSP。我想了解为什么FACELET比JSP首选为JSF 2.0的视图定义语言?我知道JSP还具有一些模板行为,这是采用面板的主要驾驶点。

P.S。:我一直在堆栈溢出上浏览了这篇文章,但我认为这没有回答我的问题。因此将其作为一个单独的问题发布。

是的,JSP具有某些模板功能,但是在JSF中使用JSP的最大缺点是,JSP在遇到响应后立即遇到响应,一旦遇到模板文本内容,而JSF希望对其进行一些预/后处理。在JSF 1.0/1.1中,以下JSF代码

<h:outputText value="first"/> second <h:outputText value="third"/> fourth

会产生

第二个第四三分之二

这是在JSF 1.0/1.1时期的头痛期间。开发人员需要在所有位置上的<f:verbatim>标签中的上述示例中包装诸如secondfourth之类的模板文本。JSF 1.2用改进的视图处理程序解决了它,该处理程序可以解析JSP而不是执行它,但是它仍然很笨拙,因为JSP语法不是"良好的"像XML。基于XML的视图技术是强烈的,因此可以使用高效的基于SAX的解析器。Facelets诞生了(以及Ken Paulsen的" Jsftemating",但最终将Facelets选为JSF 2.0的新标准视图技术)。

此外,统一的EL #{}不能在JSP模板文本中使用,从而使${}#{}的混合产生了丑陋(对于启动器而言)。另外,JSTL可以在JSP上的JSF 1.X中用作视图构建时间标签。此外,带有<% %>的JSP语法是旧学校,将RAW JAVA代码嵌入JSP的可能性被认为是一种非常糟糕的实践,破坏了MVC意识形态。

所有人,从JSF/MVC的角度来看,JSP简直丑陋而可怕,脸部简洁明了。

我在互联网上找到了以下答案。

jsftoolbox文档第3章:

JSP编译时间开销

每次您编辑,保存和重新加载JSP页面时,服务器的JSP编译器都会生成Java Servlet代码并将其编译为Servlet。这称为JSP翻译过程,通常费用在1-2秒之间,具体取决于服务器性能。

FACELETS XML汇编

与Javaserver页面不同,Facelets页面未编译为Servlet。由于Facelets页面符合XML,因此Facelets Framework使用快速的基于SAX的编译器来构建您的视图。另外,可以配置facelets以立即检测和渲染对您的页面的更改,从而加快JSF开发周期。

ian hlavats的书" JSF 1.2组件",第49页:

在JSF应用程序开发期间,我们经常更改JSF页面, 导致我们的JSP页面经常重新编译,并进行此编译时间 开销可以加起来。

facelets页面是从未编译的简单XML文档(XHTML页面) 为了使用Servlet,它使用基于SAX的编译过程来构建UI 我们视图的组成树。因此,与JSP相比,面板的速度更快

从JSP翻译上免费。

最新更新