JSP和速度之间有什么好处 - 表现 - 便于使用 - 易于创建可重用的组件 - 开源第三方的可用性 - IDE支持
答案 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;发展,似乎选择一个的主要原因是:
似乎没有太大影响的原因:
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
答案 4 :(得分:3)
我将专注于使用模板引擎,因为这是我最常遇到的。
这取决于你真正想做的事情。与Velocity(或FreeMarker)相结合的Servlet提供了非常好的逻辑和表示分离。模板更难测试,因为您需要评估模板,以便能够判断HTML(或输出格式的其他任何内容)是否正确。对于JSP,可以在您选择的IDE中完成。
模板的一大优势是,您可以将这些完全存储在应用程序之外,甚至可以在应用程序运行时更新它们。虽然热部署非常接近,但这对JSP来说有点难度。
可以使用模板引擎的include功能创建可重用的组件。
答案 5 :(得分:1)
如上所述,Velocity的优点从工程师的角度来看错过了几个非常重要的事情:
与JSP相比,后两者确实使Velocity变得有用。
答案 6 :(得分:0)
我不知道Velocity是否能够在所有方面与JSP竞争,但速度更快,更容易。如果复杂的网页可以减少速度,速度的效率会提高35%到45%但仍然是比JSP多5%。
答案 7 :(得分:0)
速度更好 它适应许多应用领域 它为模板设计器提供了简单明了的语法 它为开发人员提供了一个简单的编程模型 由于模板和代码是分开的,因此您可以单独开发和维护它们 Velocity引擎可以轻松集成到任何Java应用程序环境中,尤其是servlet Velocity使模板能够访问上下文中的任何公共数据对象方法