34

JSP 和速度之间哪个更好 - 性能 - 易于使用 - 易于创建可重用组件 - 开源 3rd 方的可用性 - IDE 支持

4

8 回答 8

44

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

表现

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

便于使用

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

易于创建可重用组件

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

开源第 3 方的可用性

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

IDE 支持

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

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

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

于 2009-03-23T12:03:03.070 回答
19

速度优势:

  • 视图与业务逻辑严格分离
  • 图形设计师可以理解的简单语法
于 2009-03-04T10:59:05.893 回答
11

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

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

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

似乎影响不大的原因:

  1. 速度。一个典型的 Java EE 应用程序中有很多层,它们的影响比视图渲染器可能花费的几毫秒或多或少要大得多。事实上,如果我的应用程序表现不佳,这可能是我要处理的最后一层。
  2. IDE 支持。JBoss Tools 提供了 Freemarker 编辑器,而 JSP 工具是众所周知的。
  3. 句法。由于 EL 和 JSTL,JSP 2 和 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>
于 2010-12-29T19:15:14.423 回答
8

速度甚至更好的FreeMarker。在 JSP 中,您不能对 pojo 层次结构进行运行时调度,并且所有内容都是静态类型的,这很痛苦。此外,如果您创建了许多 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

于 2009-03-04T10:51:19.347 回答
3

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

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

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

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

于 2009-03-04T10:55:35.217 回答
1

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

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

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

于 2013-04-13T05:56:37.977 回答
0

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

于 2009-12-19T11:16:12.943 回答
0

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

于 2015-10-28T07:43:19.123 回答