今天给大家分享一下,修真院官网java任务四中可能会使用到的知识点:
Tiles起源
最早的Tiles是组装在Struts1.1里面的,主要目的是为了将复数的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。
现在Tiles已经作为一个Apache独立的开源项目维护着。
如果您发现自己在每个页面上都要编写三行相同的 JSP 代码,或者你想容易地定义复杂的模版布局,那么相信学习Tiles框架会对你有帮助
2.知识剖析
tiles是什么
复合视图模式
所有的网站都有一些共同点:它们由共享类似结构的页面组成。页面共享相同的布局,而每个页面由不同的独立部分组成,但始终放置在整个站点的相同位置。
Tiles 是复合视图模式(Composite View pattern)的一个实现。Tiles将该模式添加到自己的概念中是该模式具体化。Tiles的实现是以复合式模式为理论, 概念包括:Template,Attribute和Definition。视图助手模式的实现是View Preparer 概念。
模板:Template
在Tiles中,模板(Template)是一个页面的布局部分。你能将一个页面结构看成是由不同的需要填补空白组成。
注意:一个模板(Template)可以没有属性(attributes),这种情况下该模板可以直接使用。有属性的话就要先定义属性才能使用,不然的话就会在解析jsp页面的时候报错
属性:Attribute
属性是模板中的空白,它在你的应用程序中被填充到模板中。
属性又分为三种
string:属性是string的话,会将string直接呈现在页面。
template:属性是一个模板(Template),有无属性都行。如果有属性的话,你也要将他们填充后再呈现页面。
definition:它是一个可重复使用组成的页面,包含所有的属性来填充以呈现页面。
定义:definition
定义是呈现给最终用户的组合物;本质上,一个定义是由一个模板和完全或部分填充的属性组成的。说白了就是:一个定义是由一个模板和属性组成的。
3.常见问题
include也可以实现多个jsp共用一个jsp的内容,为什么要使用tiles呢?
4.解决方案
刚接触web开发的人或许知道jsp可以通过include标签动态插入一个jsp页面,这样可以实现多个jsp页面共用一个jsp的内容.但是如果有一个超级大网站,jsp页面以万计呢?
如果我们一个网站的布局基本一致,这个时候,我们最好定义一个模板,如layout.jsp
包括header,ad,content,bottom;content下面又包含几个部分left,middle,right.
如果我们不使用tiles,则在每个页面按位置include相关的页面,当页面布局发生改变的时候,我们去掉左边的一部分,这个时候需要到每个页面上去删除相应的include语句;
但如果我们采用tiles的话,就只需要更改layout.jsp就行了.
tiles为了更改的规范网站布局,采用模板机制使布局维护更简单,这是tiles的真正目的所在.
5.编码实战
详情见以下视频
6.扩展思考
关于视图解析器的优先级
在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。如果返回了一个视图的名称,那么,使用哪一个视图解析器策略?
如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高
7.参考文献
参考一:Apache Tiles的基本使用
参考二:分分钟知道tiles框架是干嘛的
参考三:SpringMVC视图解析器:配置多个视图解析器的优先级
8.更多讨论
Q1:struts与tiles到底什么关系?
A:1.tiles的标签库文件从struts-el.jar文件取得。
2.tiles框架是struts框架的一部分,用tiles当然需要用到struts jar包中的东西了。
3.使用时,需要在页面引入<%@ taglib uri="http://struts.apache.org/tags-tiles-el" prefix="tiles"%>
Q2:ssh使用tiles框架,怎么使用struts2自定义的过滤器,例如过滤未登陆的用户?