11

我目前正在构建一个 Spring MVC 应用程序。我希望使用带有标记库的 JSP 页面来处理视图层和 HTML 格式,但是我遇到了我公司中的另一个小组,他们使用 Velocity 模板来实现相同的目的。

在我看来,这两种方法之间似乎有很多相似之处:

  1. 两者都有易于理解的语法。让非开发人员更容易理解和使用,让设计人员专注于 HTML/CSS,只需要在需要条件/动态内容的少数情况下使用指令/标签库,而不必完全了解爪哇。
  2. 很容易看出内容的哪些部分是 HTML 与哪些是指令/逻辑。
  3. 两者都被大量使用并得到很好的支持。
  4. 易于与 Spring MVC 集成。

但是在比较这两种技术时,我看不出使用其中一种技术的任何具体原因。我很难想到 Velocity 或 JSTL 特有的任何缺点。

所以我的问题是,您认为每种方法的优缺点是什么?如果您使用其中一个或另一个构建了一个(Spring)MVC 应用程序,是什么让您决定您正在使用的视图层技术,以及是什么(如果有的话)让您决定反对另一个?

更新:我在 Spring Framework 论坛的here上找到了关于该主题的类似讨论,这对于在 JSTL 和 Velocity 之间做出相同决定的人来说可能会有些兴趣。

4

3 回答 3

8

我更喜欢使用 Velocity 只是因为使用 JSP+JSTL 可以让懒惰/草率的开发人员通过添加脚本而陷入困境。应该没有理由在您的视图层中有 java 代码。了解 Velocity 并不需要太多时间,事实上我只是在大约两周内学会了它。虽然我不喜欢输出的格式,但在大多数情况下它工作得很好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成 HTML 以供其他浏览器使用。我们将 Velocity 的输出保存为文件,然后将其部署到不同的服务器以供其他 Web 客户端使用。

于 2008-12-19T20:00:48.307 回答
6

实际上,我更喜欢 Freemarker 而不是 Velocity,以防万一您愿意探索其他选项。这里比较:

http://freemarker.org/fmVsVel.html

我同意 Ben 关于通过避免 JSP 和 scriptlet 的可能性来强制执行简单视图的说法。我还喜欢在任何类型的执行环境(JUnit、main() 方法)中呈现 Freemarker 或 Velocity 模板的能力,而无需像 JSP 那样需要 Servlet/JSP 容器。

于 2009-01-01T06:15:58.900 回答
2

JSP 也更难以在视觉上与嵌入的 HTML 区分开来。使用速度,这是非常明显的。

此外,VelocityTools 包提供了大量的附加功能。

于 2009-02-02T22:46:05.457 回答