在MVC应用程序中使用JSTL vs Velocity进行视图层的好处?

时间:2008-12-19 15:56:46

标签: java spring jsp spring-mvc velocity

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

从我所看到的情况来看,在我看来两种方法之间有很多相似之处:

  1. 两者都有易于理解的语法。使非开发人员易于理解和使用,允许设计人员专注于HTML / CSS,只需在需要条件/动态内容的少数情况下使用指令/标记库,而无需完全了解Java的。
  2. 很容易看出内容的哪一部分是HTML,哪些是指令/逻辑。
  3. 两者都被大量使用并得到很好的支持。
  4. 易于与Spring MVC集成。
  5. 但是在比较这两种技术时,我看不出使用其中一种技术的具体原因。我无法考虑任何特定于Velocity或JSTL的缺点。

    所以我的问题是,你认为每个人的利弊是什么?如果您使用其中一个构建了一个(Spring)MVC应用程序,那么是什么让您决定使用的视图层技术以及您决定使用哪一个(如果有的话)?

    更新:我在Spring Framework论坛的here上找到了对此相同主题的类似讨论,这可能是任何在JSTL和JSTL之间作出相同决定的人所感兴趣的。像我一样速度。

3 个答案:

答案 0 :(得分:8)

我更喜欢使用Velocity,因为使用JSP + JSTL可以允许懒惰/草率的开发人员通过添加scriptlet来解决问题。应该没有理由在视图层中使用Java代码。理解Velocity并不需要太多,事实上我只是在两周左右就把它拿起来了。虽然我不喜欢输出的格式,但在大多数情况下它的效果非常好。我们实际上并没有在应用程序的视图层中使用它,而是用于生成供其他浏览器使用的HTML。我们将Velocity的输出保存为文件,然后将其部署到不同的服务器以供其他Web客户端使用。

答案 1 :(得分:6)

我实际上稍微喜欢Freemarker和Velocity,以防你开始探索其他选择。比较在这里:

http://freemarker.org/fmVsVel.html

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

答案 2 :(得分:2)

JSP在视觉上区别于嵌入式HTML也更加困难。使用Velocity,非常明显。

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