我是IT修真院的散修学员,正在学习java任务四,下面是我对tiles框架的总结
三个概念
template
最终用于视图渲染的页面布局,他只是个模版,可以把固定不变的部分提前定义在其中,比如格式布局,以及颜色设置啥的。然后把可变的部分定义为attribute,后续通过在definition中根据个性化需求配置。
attribute
用来填充template ,可以是字符串, template (也就是jsp文件路径)以及definition。
definition
一个definition标签就代表一个tile,一个tile必须以一个template做根基,然后添加该template所需要的attribute。与template对比的话 , template重点在于确定该页面的整体布局结构。而使用definition ,以及definition的继承体系,重点在于实现jsp的复用。
tile的配置文件
在其中配置多个tile的定义,即多个definition标签,将来该配置文件被加载后就会获得多个相应的tile用来进行视图渲染。具体的语法不展开了。
需要引入tiles约束文件
这里使用的是dtd约束,需要在xml中添加
"http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
这样才能使用标签及其子标签。
加载tile配置文件
如果不使用springmvc
仅仅需要在web.xml中配置一个监听器即可
如果使用springmvc框架
需要在springmvc容器的配置文件中注册一个TilesConfigurer类型的bean
使用tile
如果不使用springmvc
首先在要用来渲染的jsp文件中使用taglib指令引入tiles相关的标签库,就像引入jstl标签库那样。
<%@ taglib uri="http://tiles.apache.org/tags-tiles"prefix="tiles"%>
然后就可以使用具体的tiles标签来引入定义好的tile ,具体使用有两种方式
传统方式就是直接通过tiles:insertDefinition标签来引入现成的tile
另一种方式就是可以运行时合成,即通过相应标签修改某definition的attribute ,或者重新定义新的definition ,具体不展开
如果使用springmvc
如果像上面方式使用tile ,那不需要多余的配置,跟上面使用方式一样
但是如果需要在controller中让某handler返回的逻辑视图名直接指向TilesConfigurer加载的tile ,用该tile做视图渲染,那就需要一个工具来为逻辑视图名匹配到t目标tile ,这个工具就是一个视图解析器
按照官方文档来说,目前已知有三种视图解析器都能完成此项任务,分别是TilesViewResolver , UrlBasedViewResolver和ResourceBundleViewResolver。三种解析器配置方式不同,一般常用的就是TilesViewResolver ,他是专用于tiles视图解析的。
关键问题
现在在springmvc的配置文件中可能存在两个视图解析器
一个是用于tiles视图解析的TilesViewResolver
一个是用于jsp文件视图解析的InternalResourceViewResolver
现在从一个handler中返回一个逻辑视图名, 如果存在同名的jsp逻辑视图名和tile名,那如何区分?通过配置两个视图解析器的优先级(p:order="xxx"指定) ,优先级高的视图解析器得到执行,最终的视图就是该解析器的解析结果。
其他高级功能
在官网有详细的介绍,参考http://tiles.apache.org/framework/tutorial/index.html
关于IT修真院
欢迎到IT修真院学习IT技术,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄一对一可见指导。快来与我一起学习吧http://www.jnshu.com,我真的获益良多!
还有,那啥,虽然跟修真院老大未曾谋面,但他既然把夸他很帅列在了修真任务中,而我一路学习下来感觉其他任务都非常靠谱,那这个任务的质量肯定也不差,所以老大很帅!