【问题标题】:JSP vs Velocity what is better?JSP 与 Velocity 哪个更好?
【发布时间】:2010-10-11 05:42:04
【问题描述】:

JSP 和velocity 之间哪个更好 - 表现 - 便于使用 - 易于创建可重用的组件 - 开源第 3 方的可用性 - IDE 支持

【问题讨论】:

    标签: java jsp velocity


    【解决方案1】:

    @Vartec: 我不认为“视图与业务逻辑的严格分离”是 jsp 中不存在的速度特性。您可以在 jsp 中(或多或少)做业务逻辑,但完全不推荐。但我同意你关于语法的观点。

    性能

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

    易于使用

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

    易于创建可重用组件

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

    开源第三方的可用性

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

    IDE 支持

    jsp 有很多工具。尤其是eclipse jboss插件/工具套件,jsp编辑器不错。

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

    更新 如果您现在正在寻找模板引擎,我建议您看看 thymeleaf。它相对于速度来说是相当轻量级的,可以用几行代码来模板化一些基于文本的模板,或者用作一个全功能的模板引擎,例如在 web 应用程序中。

    【讨论】:

      【解决方案2】:

      速度的优势:

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

      【讨论】:

        【解决方案3】:

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

        在这两种技术的发展阶段,选择其中一种的主要原因似乎是:

        1. 您需要一些特定的东西,它在一个而不是另一个
        2. 您希望阻止视图开发人员将 Java scriptlet 放入 JSP 页面中
        3. 您的开发人员在其中一个方面比在另一个方面更自在

        似乎影响不大的原因:

        1. 速度。一个典型的 Java EE 应用程序中有很多层,它们的影响比视图渲染器可能花费的几毫秒或多或少要大得多。事实上,如果我的应用表现不佳,这可能是我要处理的最后一层。
        2. IDE 支持。 JBoss Tools 提供了 Freemarker 编辑器,JSP 工具是众所周知的。
        3. 语法。由于 EL 和 JSTL,JSP 2 和 Freemarker 对于许多基本操作具有几乎相同的语法。

        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>
        

        【讨论】:

          【解决方案4】:

          速度甚至更好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

          【讨论】:

          • 我一直想知道为什么 freemarker 被认为比速度更好 - 在我看来,他们似乎做同样的事情!我以前没有使用过速度,但我已经看到了它。我用过freemarker,我不得不说它很容易使用。但我预计速度会相似,因此我想知道。
          • FreeMarker 比 Velocity 更高级,可以下到更低的层次,能力越大责任越大;)freemarker.org/fmVsVel.html
          【解决方案5】:

          我将专注于使用模板引擎,因为这是我最有经验的。

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

          模板的一大优势是您可以将它们完全存储在应用程序之外,甚至可以在应用程序运行时更新它们。尽管热部署非常接近,但使用 JSP 实现这一点有点困难。

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

          【讨论】:

            【解决方案6】:

            上述 Velocity 的优势从工程师的角度来看,遗漏了一些非常重要的事情:

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

            与 JSP 相比,最后两个确实使 Velocity 有用。

            【讨论】:

              【解决方案7】:

              我不知道 Velocity 是否能够在各个方面与 JSP 竞争,但 Velocity 更快、更容易。如果是复杂的网页,Velocity 的效率要高出 35% 到 45%,它可能会降低,但仍然如此比 JSP 多 5%。

              【讨论】:

              • 如果您的意思是 Velocity 使用起来更快,那么可以,但 Velocity 并不比 JSP 快。 Velocity 将 html 字符串与数据合并,而 JSP 将 html 直接发送到 writer。如果您在velocity 的mergeTemplate 调用中添加日志记录时间,您就会明白我的意思。
              • 无论哪种方式,都需要证明!我们需要数字、图表、基准! ;)
              • 需要您的断言证明。速度比jsp更好的确切方面是什么。效率是什么?你对复杂的网页是什么意思?,你是如何获得这 5% 的。在写这篇评论的那一刻,真的是一个不负责任的回答
              【解决方案8】:

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

              【讨论】:

                猜你喜欢
                • 2014-04-02
                • 2013-11-28
                • 2013-09-10
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-09-18
                • 2010-11-13
                • 1970-01-01
                相关资源
                最近更新 更多