大家好,我是IT修真院北京分院第31期的学员,一枚正直纯洁善良的JAVA程序员。今天给大家分享一下,修真院官网JAVA任务4的深度思考——为什么要使用Tiles框架.
1.背景介绍
TILES框架
Tiles是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。Tiles使得struts在页面的处理方面多了一种选择。并且更容易实现代码的重用。
最早的Tiles是组装在Struts1.1里面的(Struts-Tiles),后面发展为独立的Tiles框架(Tiles 2+,目前最新版本为3.0)。
TILES页面布局
Tiles增加了layout的概念,其实就是把一个页面划分为几块。通常的来说一个页面大概可以划分为如下几块:
head页面头部:存放一个运用的公共信息:logo等,如果是网站可能是最上面的一块。
menu页面菜单:放置一个运用中需要使用的菜单,或者在每一个页面都使用的连接。footer页面尾部:如版权信息等。body页面主题内容:每个页面相对独立的内容。
如果按上面的划分那对每一个页面我们只要写body里面的内容,其他的就可以共享重用。如果大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body。
2.知识剖析
TILES框架
Tiles框架可以令我们组合可以复用的Tiles来搭建网页。例如,下图中的页面就是通过组合一个header, 一个footer, 一个menu 和一个body搭建起来的。
每一个Tiles(header, menu, body, ...)都是一个JSP页面,它们也可以通过组合其他的Tiles来搭建。
应用Tiles就好比是应用Java的方法:需要你定义Tiles(方法体),然后你才能够在任何你需要的地方“调用”该方法体,并传递一些参数。在Tiles中,为了避免与request参数相混淆,参数 (parameters)被称为属性(attributes)。
Tiles的方法体(也可以说是内容——译者注)可以是一个简单的JSP页面, 或者是一个Struts的动作(action),或者任何一个指向现存的网页资源的URI。
插入或者调用Tiles可以通过在JSP中的任何位置置入如下tag来完成:tiles:insert ...。插入也可以通过下面的方法来完成:指定一个作为Struts forward的路径的自定义名;或者指定一个作为Struts action的input,forward或者include属性的自定义名。
Tiles的方法体是用来创建版面布局,可复用部分等的,而Tiles的插入操作是用来插入Tiles的.同一个Tiles可以在同一个站点甚至同一个页面被重用多次。
Tiles的插入可以与一个在Tiles中称作“definition”的逻辑名联系起来。一个Tiles的definition包含一个逻辑名,一个主体页面和一些属性值。definition的声明并不插入与其相关联的Tiles方法体,它只是让Tiles与它的逻辑名关联起来。可以在任何能够插入Tiles地方运用定义的逻辑名,这样与其对应的Tiles及其属性就被插入进来了。
Tiles的definition的定义可以在JSP页面中进行,也可以在一个或者多个中心控制文件中进行。 Definition可以继承于另外一个Tiles的definition,重载一些属性,添加一些新的属性等等。这就允许“父类”的definition定义一些通用的layout, header, menu, footer. 所有其他继承于该父类的 definition可以简单地通过改变其definition来改变整个页面。
嵌套TILES
一个 tile 布局可以插入到另一个 tile 布局中,依此类推。实际上,创建的 tile 布局如此之 小,以至于它们本身并不是真正的模板。相反,它们是更类似于自定义标签的小型可视组件,而不是页面模板。
TILES运行流程
当Spring MVC的DispatchServlet收到来自浏览器的请求后,分析出需要请求的控制器,然后访问解析出来的控制器StudentController的home方法,接着就开始解析视图了。因为我们用的是Tiles的视图解析器,激情饱满的二级制代码就访问到了layout.xml (jnshu.xml),最后根据layout.xml的配置组装成我们看到的页面。
为什么要用Tiles框架
举个通俗的例子,现在,假如有一个超级大的电子商务网站,网站拥有10万个JSP页面(悄悄告诉你,这仅仅是一个假设),并且每个JSP都引用了同一个JSP(我们称这个JSP页面为A吧)。现在你就是这个网站的开发人员,有一天老板跑到你面前说:“大量用户反馈页面A设计得太丑,严重影响用户体验,所以你今天必须要让页面A从网站上消失,否则炒鱿鱼走人”,这个凶神恶霸的老板说完就甩手走出去了,你没有任何辩解的机会。这时,恐怕你不会觉得自己一人能够搞定,那怎么办?程序员都有很多好基友,找一百个基友来一起改,每人只需要改1000个页面。不然,只有垂头丧气地收拾好东西离职了。
但是,要是有一天老板又跑过来找你,让你为每个JSP页面的底部加一个跳舞的小黄人,又该怎么办呢?那有没有一种方法,可以不用请一百个好基友帮忙,就可以在十分钟之内完成老板交给你的任务?没错,Tiles就是为你遇到的这种需求服务的。一旦你在网站系统中使用了Tiles技术,若老板让你删除10万个页面所引用的一个JSP,如果你的速度快的话,你可以在10秒钟之内解决。那要想再让这10万个页面去引用一个JSP呢?也是一样的操作,非常简单。
3.编码实战
4.常见问题
1,在使用Tile框架中要注意导入Tiles的jar包冲突问题.
5.参考文献
https://blog.csdn.net/zaowei21/article/details/215077
https://blog.csdn.net/chj225500/article/details/7055526
http://mengyang.iteye.com/blog/1156733
6.更多讨论
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:17742750,或者你可以直接点击此链接:http://www.jnshu.com/login/1/17742750
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。