Tiles提供一个标签库可以让程序员创建一个jsp布局页面来定义应用程序里所有页面的布局。只要在jsp布局页面里做出修改,就可以让引用了这个布局页面的所有其他jsp页面都发生相应改观。
1,布局页面:是专门用来定义页面布局的模板性jsp页面。
2,Tiles定义:布局页面与使用该布局页面的jsp页面之间的一个“夹层”。每个Tiles定义对应一个视图,可以是jsp页面或velocity、freemarker模板。Tiles布局页面类比接口,那么Tiles定义页面则为实现这个接口的基类。一个jsp页面可以引用一个定义页面而非布局页面。而jsp引用页面则“使用”这个jsp定义页面。Tiles定义页面tiles.xml放在web-inf/lib下。
3,使用注意事项:
(1),需要导入的jar:
tiles-core-version.jar,tiles-api-version.jar,tiles-jsp-version.jar,struts2-tiles-plugin-version.jar。经过demo测试,发现还需要导入,commons-digester.jar,commons-beanutils.jar
(2),需要在web.xml注册监听StrutsTilesListener.java
〈listener〉
〈listener-class〉
这个监听类的完全限定名
〈/listener-class〉
〈/listener〉
(3),声明tiles结果类型
方式一:
在struts-plugin.xml文件进行结果类型声明
〈package name=“tiles-default” extends=“struts-default”〉
〈result-types〉
〈result-type name=“tiles” class=“…….TilesResult”/〉
〈/result-types〉
〈/package〉
然后在web.xml文件的某个package直接继承tiles-default,既可使用这个结果类型。
方式二:
直接在web.xml某个package中声明这个结果类型。
(4),在动作里可以使用这个结果类型啦。
并且这些动作的结果对应的不是jsp页面,而是tiles.xml文件中Tiles定义中的某个定义。
(5),Tiles定义文件tiles.xml
dtd限定是
〈!DOCTYPE tiles-definitions PUBLIC
“-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN”
“http://struts.apache.org/dtds/tiles-config_2_0.dtd”
〉
〈tiles-definitions〉
〈definition name=“Product” template=“/jsp/MyLayout.jsp”〉 //此为模板jsp
〈put-attribute name=“pageTitle” value=“网页标题”/〉
〈put-attribute name=“header” value=“/jsp/Header.jsp”/〉
〈put-attribute name=“body” value="/jsp/Product.jsp”/〉
〈put-attribute name=“footer” value=“/jsp/Footer.jsp”〉
〈/definition〉
〈/titles-definitions〉
//只定义了一个Tiles定义:Product
(6)模板jsp页面
〈tiles:insertAttribute name=“header”〉
〈tiles:insertAttribute name=“body”〉
〈tiles:insertAttribute name=“footer”〉