JSP vs Velocity有什么更好的?

时间:2009-03-04 10:45:34

标签: java jsp velocity

JSP和速度之间有什么好处 - 表现 - 便于使用 - 易于创建可重用的组件 - 开源第三方的可用性 - IDE支持

8 个答案:

答案 0 :(得分:42)

@Vartec: 我不认为“严格分离视图与业务逻辑”是jsp中不存在的速度特性。您可以在jsp(或多或少)中执行业务逻辑,但根本不建议这样做。但我同意你对语法的看法。

<强>性能

JSP被编译为Java,所以我不认为速度更快。 (我自己没有做过基准测试)

易于使用

对于设计师:速度 对于程序员:(恕我直言)jsp,因为它更接近代码

易于创建可重用的组件

JSP有很多组件 Velocity本身没有组件(不是组件导向)

开源第三方的可用性

我见过使用JSP或JSP相关技术而不是速度的项目。也许是因为速度真的很低......: - )

IDE支持

jsp有很多工具。特别是eclipse jboss插件/工具套件有一个很好的jsp编辑器。

Velocity的插件大多没有功能或非常基本(如果你有语法高亮,你会很幸运)

<强>更新 如果您现在正在寻找模板引擎,我建议您查看百里香。它的速度相对较轻,可以用来模拟一些基于文本的模板,只需几行代码,或者用作全功能的模板引擎,例如在webapp中。

答案 1 :(得分:19)

Velocity的优点:

  • 严格区分视图与业务逻辑
  • 图形设计师可以理解的简单语法

答案 2 :(得分:10)

下面是关于Freemarker的,但比较可能仍然相关。

在这两项技术的这一点上&#39;发展,似乎选择一个的主要原因是:

  1. 你需要一些特定的东西,而不是其他的
  2. 您希望阻止视图开发人员将Java scriptlet放入JSP页面
  3. 您的开发人员比其他人更舒服
  4. 似乎没有太大影响的原因:

    1. 速度。典型的Java EE应用程序中有太多层,其影响远远大于视图渲染器可能花费的几毫秒。事实上,如果我的应用程序执行subpar,这可能是我要解决的最后一层。
    2. IDE支持。 JBoss Tools提供了一个Freemarker编辑器,而JSP工具也是众所周知的。
    3. 语法。由于EL和JSTL,JSP 2和Freemarker对于许多基本操作具有几乎相同的语法。
    4. Freemarker示例:

      <#list foos as foo>
        <tr>
           <td>${foo.field1}</td>
           <td>${foo.field2}</td>
           <td>
              <#list foo.childObjects as child>
                 <#if child.name == 'bar'>
                    ${child.value}
                 </#if>
              </#list>
           </td>
        </tr>
      </#list>
      

      JSP-EL-JSTL示例:

      <c:forEach items="${foos}" var="foo">
        <tr>
           <td>${foo.field1}</td>
           <td>${foo.field2}</td>
           <td>
              <c:forEach items="${foo.childObjects}" var="child">
                 <c:if test="${child.name == 'bar'}">
                    ${child.value}
                 </c:if>
              </c:if>
           </td>
        </tr>
      </c:forEach>
      

答案 3 :(得分:8)

速度甚至更好FreeMarker。 在JSP中,您不能拥有runtime dispatch for pojo hierarchies,并且所有内容都是静态类型的,这很痛苦。此外,如果您创建了许多JSP2.0自定义标记(例如超过100-150),那么由于Jasper无效率地有效地解决依赖关系,您的开发部署周期将会大大减慢。

另一方面,JSP提供了很好的工具支持。

缓慢的JSP编译参考:

http://www.mailinglistarchive.com/users@tomcat.apache.org/msg10786.html

http://marc.info/?l=tomcat-dev&m=119377083422720&w=2

答案 4 :(得分:3)

我将专注于使用模板引擎,因为这是我最常遇到的。

这取决于你真正想做的事情。与Velocity(或FreeMarker)相结合的Servlet提供了非常好的逻辑和表示分离。模板更难测试,因为您需要评估模板,以便能够判断HTML(或输出格式的其他任何内容)是否正确。对于JSP,可以在您选择的IDE中完成。

模板的一大优势是,您可以将这些完全存储在应用程序之外,甚至可以在应用程序运行时更新它们。虽然热部署非常接近,但这对JSP来说有点难度。

可以使用模板引擎的include功能创建可重用的组件。

答案 5 :(得分:1)

如上所述,Velocity的优点从工程师的角度来看错过了几个非常重要的事情:

  • 严格区分视图与业务逻辑(如上所述)
  • 图形设计师可以理解的简单语法(如上所述)
  • 紧凑的代码,不再是以后重新访问的噩梦,请参阅 example link
  • 非servlet容器部署意味着可以轻松部署到任何地方

与JSP相比,后两者确实使Velocity变得有用。

答案 6 :(得分:0)

我不知道Velocity是否能够在所有方面与JSP竞争,但速度更快,更容易。如果复杂的网页可以减少速度,速度的效率会提高35%到45%但仍然是比JSP多5%。

答案 7 :(得分:0)

速度更好     它适应许多应用领域     它为模板设计器提供了简单明了的语法     它为开发人员提供了一个简单的编程模型     由于模板和代码是分开的,因此您可以单独开发和维护它们     Velocity引擎可以轻松集成到任何Java应用程序环境中,尤其是servlet     Velocity使模板能够访问上下文中的任何公共数据对象方法