JSP vs Velocity有什么更好的?

JSP和速度之间有什么更好 – 性能 – 易于使用 – 易于创build可重用组件 – 开源第三方的可用性 – IDE支持

速度的优点:

  • 严格分离业务逻辑
  • 简单的语法,可以被graphicsdevise师理解

@Vartec:我不认为“严格分离视图和商业逻辑”是一个不存在于jsp中的速度特征。 你可以在jsp中做业务逻辑(或多或less),但是根本不推荐。 但是我对你的观点表示赞同。

性能

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

使用方便

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

易于创build可重用的组件

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

开源第三方的可用性

我已经看到使用JSP或JSP相关技术的项目比速度更多。 也许是因为速度真的很低… 🙂

IDE支持

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

Velocity的插件大多不是function性的或非常基本的(如果你有语法突出显示,你会很幸运)

更新如果你现在正在寻找一个模板引擎,我build议看看百里香。 它的速度比较轻,可以用几行代码来模板化一些基于文本的模板,或者用作webapp中的全function模板引擎。

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

在这两个技术的发展中,看起来主要的原因是:

  1. 有一些具体的,你需要在一个而不是其他
  2. 您希望阻止视图开发人员将Java脚本放入JSP页面中
  3. 您的开发人员比其他人更舒适

原因似乎没有太多的影响:

  1. 速度。 典型的Java EE应用程序中有太多的层次,比视图渲染器可能采用的几毫秒更多或更less的影响要大得多。 事实上,如果我的应用程序执行的是次优操作,这可能是我要解决的最后一个问题。
  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> 

速度甚至更好的FreeMarker 。 在JSP中,您不能拥有pojo层次结构的运行时分派,并且所有内容都是静态types化的,这是一件很痛苦的事情。 此外,如果您创build了许多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

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

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

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

可重用组件可以通过使用模板引擎的包含function来创build。

从上面的angular度来看,Velocity的优势从工程师的angular度来看错过了一些非常重要的事情:

  • 严格分离业务逻辑(如上所述)
  • graphicsdevise者可以理解的简单语法(如上所述)
  • 紧凑的代码,这是一个噩梦稍后重访,看例子链接
  • 非servlet容器部署意味着可以轻松部署到任何地方

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

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

速度更好它适应于许多应用领域它提供了一个简单,清晰的模板devise语法它为开发人员提供了一个简单的编程模型由于模板和代码是分开的,你可以独立开发和维护它Velocity引擎很容易集成到任何Java应用程序环境,特别是Servlet Velocity使模板能够访问上下文中的任何数据对象的公共方法