我将选择一种方法来组织我的视图(使用spring-mvc,但这无关紧要)
据我所知,有6个选项(尽管它们并不互斥):
- 瓷砖
- Sitemesh
- 自由标记
- 速度
<jsp:include>
<%@ include file="..">
磁贴和Sitemesh可以分组;Freemarker和Velocity也可以。每个小组中使用哪个小组都不是本次讨论的问题,对此有足够的问题和讨论。
这是一本有趣的读物,但不能说服我使用磁贴。
我的问题是- 这些框架提供了哪些使用 <@ include file="..">
JSTL 无法正确完成的功能。要点(摘自本文):
包括页面的某些部分,例如页眉和页脚 -两者之间没有区别:
<%@ include file="header.jsp" %>
和
<tiles:insert page="header.jsp" />
在标题中定义参数 -例如标题,元标记等。这非常重要,尤其是从SEO角度来看。使用模板选项,您可以简单地定义每个页面都应定义的占位符。但是,因此您可以在JSTL的 jsp中使用
<c:set>
(在包括页面中)和<c:out>
(在包括页面中)布局重组 -如果要将面包屑移动到菜单上方,或者将登录框移动到另一侧面板上方。如果页面包含(使用jsp)的组织不佳,则在这种情况下可能需要更改每个页面。但是,如果您的布局不是过于复杂,并且将常见内容放在页眉/页脚中,则无需担心。
通用组件和特定内容之间的耦合 -我没有发现任何问题。如果要重用某些片段,请将其移到不包含任何页眉/页脚的页面上,并在需要的地方包含它。
效率 -
<%@ include file="file.jsp" %>
比任何东西都更有效率,因为它只编译一次。所有其他选项都会被多次解析/执行。复杂性 -所有非jsp解决方案都需要附加的xml文件,附加的包含文件,预处理器配置等。这既是学习曲线,又会引入更多潜在的故障点。而且,它使支持和更改变得更加乏味-您必须检查许多文件/配置才能了解正在发生的事情。
占位符 -速度/ freemarker除了提供JSTL之外还能提供更多功能吗?在JSTL中,您放置了占位符,并使用模型(由控制器放置在请求或会话范围中)填充了这些占位符。
因此,说服我,除了普通的JSP之外,我还应该使用上述任何框架。