[页面模板框架对比] Apache Tiles VS Sitemesh
1. 原理对比
(1) Apache Tiles 顾名思义,Tile是瓷砖的意思,也就是说一个网页是由多个Tile组成的。
用户通过访问一个页面的Apache Tiles定义名,就可以访问一个由定义文件中包含的页面组成的最终的JSP。
如以下一个Apache Tiles定义文件:
<tiles-definitions>
<definition name="myapp.homepage" template="/layouts/classic.jsp">
<put-attribute name="title" value="Tiles tutorial homepage" />
<put-attribute name="header" value="/tiles/banner.jsp" />
<put-attribute name="menu" value="/tiles/common_menu.jsp" />
<put-attribute name="body" value="/tiles/home_body.jsp" />
<put-attribute name="footer" value="/tiles/credits.jsp" />
</definition>
</tiles-definitions>
其中首先告诉我们,这个定义的虚拟页面叫做myapp.homepage.
用户通过 http://site:port/webname/myapp.homepage就能访问到一个页面。
这个页面来自的模板是:/layouts/classic.jsp
而模板中各个部位真正的值,则是下面的那些jsps。
如下为原理图:
(2) Sitemesh 的原理和 Apache Tiles截然不同,如果说Apache Tiles 中的原理是组装工厂的话,那么Sitemesh中的原理就是装饰工厂。
这个概念比较抽象。
Sitemesh通过一个过滤器来实现,当每个页面返回时,给它穿上衣服,打扮打扮,再返回。
而Apache Tiles 则是通过一个组装器,在页面被请求后开始工作,组装完毕,返回,网站文件中也许根本没有这个请求的资源,而是临时按照定义拼凑起来的。
如下为一个装饰定义文件:
<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/decorators">
<decorator name="basic-theme" page="basic-theme.jsp">
<pattern>/data/*</pattern>
</decorator>
</decorators>
这个文件,定义了每个jsp被请求后,都穿上一件 叫 basic-theme.jsp的衣服。
如下图为Sitemesh的原理图: (apage.jsp 穿上渲染页面后返回)
2. 重用性比较
Apache Tiles 基于定义,任何页面都可以被重组,使用起来组合千变万化。 而Sitemesh 也可以实现页面重用,通过渲染的方式。不过灵活性对比Apache Tiles还是稍微差点。
比如 ABC三个子页面。
ApacheTiles可以轻松定义:page1 = ABC page2= BAC page3=CAB ....
而Sitemesh每个页面都要自己想清楚,谁该是主,谁该是装饰。我觉得这涉及到一个人的思维习惯。。。
总结: 都具有高重用性,Apache Tiles相对于 Sitemesh来说,更加灵活。Apache Tiles 面向定义,Sitemesh 面向 Jsp。
3. 轻量级性
两者都是轻量级框架,不过Sitemesh 更胜一筹,原理简单,配置更加简单,而且非常容易和其他MVC框架结合。
4. 用哪个?
待实践。不过,我个人喜欢定义方式,千变万化,自己挑拣,所以我更钟爱Apache Tiles。Sitemesh 虽配置简单,但当页面复杂起来,需要好好理理谁主谁次。不过百度一大把说Sitemesh比Tiles好的,我感觉可能是Sitemesh入手简单吧,后面页面层次复杂了,很容易迷失。这个观点在Stackoverflow上得到了验证。老外看来也是比较prefer tiles。其原因还有,Apache Tiles 一直都在升级和维护。Apache倒的可能性不大。
[页面模板框架对比] Apache Tiles VS Sitemesh的更多相关文章
- SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架
一.SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容 ...
- apache tiles 页面模板的使用
jar包maven <!-- Tiles 模板--> <dependency> <groupId>org.apache.tiles</groupId> ...
- 使用 Apache Tiles 3 构建页面布局
参考博客:http://aiilive.blog.51cto.com/1925756/1596059Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以 ...
- Apache Tiles 2.x 应用指南(转)
转自:http://jaymsimusic.iteye.com/blog/1138906 Apache Tiles 2.x 应用指南 博客分类: Apache Tiles Jakarta Tile ...
- 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink
转自:https://www.cnblogs.com/reed/p/7730329.html 今天看到一篇讲得比较清晰的框架对比,这几个框架的选择对于初学分布式运算的人来说确实有点迷茫,相信看完这篇文 ...
- 第6章—渲染web视图—使用Apache Tiles视图定义布局
使用Apache Tiles视图定义布局 Tiles是一个免费的开源模板Java应用程序的框架.基于复合模式简化的用户界面的构建.对于复杂的网站仍是最简单.最优雅的方式与任何MVC技术一起工作.S ...
- ORM框架对比以及Mybatis配置文件详解
ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...
- Android自动化测试框架对比
1.Monkeyrunner:优点:操作最为简单,可以录制测试脚本,可视化操作:缺点:主要生成坐标的自动化操作,移植性不强,功能最为局限:2.Rubotium:主要针对某一个APK进行自动化测试,AP ...
- Android &Swift iOS开发:语言与框架对比
转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...
随机推荐
- 给刚通过51入门的新人讲讲S12(MCS12XS128)与51的差别
MCS51是keil也对应地做好了非常多,也就是有非常多对你而言是透明的,是你不必关心的,你所要接触的寄存器数量也非常小,在这个时候你很多其它是写函数,仅仅只是针对这个平台写C程序比在PC上写C控制台 ...
- 设置Ubuntu 10.10版本的软件源
设置Ubuntu 10.10版本的软件源 http://blog.csdn.net/xie1xiao1jun/article/details/49911189 网上有很多关于软件源信息的更新,每次 ...
- BZOJ 4177: Mike的农场( 最小割 )
显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...
- DP之花店橱窗布置
题目:https://www.smartoj.com/p/1286 分析:花瓶是有序的,花也是有序的,这就保证了有序性,从而满足子解的全局最优,和无后效性.假设dp[i][j]表示前i 朵花,放在前j ...
- django局域网建一个网站
之前总是运行的python manage.py runserver,用默认的在本机访问的127.0.0.1:8000,如果跟几个同学一起去开发一个网站来玩玩的话,可以这样: python manage ...
- 虚拟主机的配置、DNS重定向网站
虚拟主机的配置:我用的是localhost本地测试站点+Apache环境 第一步:找到Apache安装目录下的httpd-vhosts.conf文件,然后启用这个文件,如何启用这个文件呢?当然是在ht ...
- 教你看懂C++类库函数定义之一---HRESULT 宏
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...
- [WPF源代码]QQ空间相册下载工具
放一个WPF源代码,源代码地址 http://download.csdn.net/detail/witch_soya/6195987 代码没多少技术含量,就是用WPF做的一个QQ空间相册下载工具,效果 ...
- hdu 4614 Vases and Flowers (二分 线段树)
题目大意:爱丽丝有N个花瓶,每个花瓶最多放一朵花.然后又如下两个操作. 1:A B 从第A个花瓶开始,往后依次插B朵花,直到不能插为止.如果一朵花都不能插入就输出“can.....”,否则输出第 ...
- JSP 网页格式判定执行哪一块html
JSP 网页格式判定执行哪一块html <!-- start --> <td height="166" colspan="3&q ...