2.配置struts-config中的plus-in属性
3.配置web.xml中的taglib属性,将tiles标签配进去
4.写Tiles的配置文件tiles-def.xml
5.根据tiles-def.xml写布局,布局其实就是一个.jsp,只不过包含了tiles:insert
6.写页面
7.不同的跳转方式:
1)增加新页面(每个页面需要写两个JSP,一个调用页面,一个框架中的页面)
2)用action的paremeter属性。
二、使用Tiles框架需要注意的地方:
1.plus-in属性中的definitions-config属性指定Tiles配置文件,可以指定多个
2.Tiles配置文件中的组合关系
<definition name="base-definition" path="/layout.jsp">
<put name="sidebar" value="sidebar.jsp"/>
<put name="header" value="header.jsp"/>
<put name="content" value=""/>
<put name="footer" value="footer.jsp"/>
</definition>
<definition name="index-definition" extends="base-definition">
<put name="content" value="indexContent.jsp"/>
</definition> |
这样一来,每次增加一个新的类似indexContent的页面时,只需要配置一个新的继承自base-definition的definition就OK了
3.主调页面和布局中的内容页面是不同的概念。主调页面只需要有这么几句话就OK
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" divfix="tiles"%>
<tiles:insert definition="index-definition"/> |
其中definition属性指定需要用到Tiles中的哪个配置
而内容页面就完全可以不考虑模板的问题,直接该怎么写,就怎么写。
4.两种不同的使用方式还没弄明白。不过Tiles确实很好用。
三、Tiles的优缺点:
说实话,跟使用框架结构比起来,还是比较麻烦的,而且会增加JSP的数量。但是和现在用的Frame框架比较,是比较安全的。现在用的Frame框架如果在地址栏里直接输入一个url,就会导致框架不复存在。这样是很危险的。而Tiles恰好弥补了这方面的不足。
二)
1. 1.Tiles框架包含以下内容:Tiles标签库、Tiles组件的配置文件、TilesPlugIn插件
2. 2. 在JSP页面中<tiles:insert>标签和JSP include指令具有相同功能:
<jsp:include page=”indexContent.jsp”>
<tiles:insert page=”indexContent.jsp” flush=”true”> 作用是相同的 true表示在插入操作之前,先调用当前页面的输入流的flush()方法。
3. 3. 使用tiles标签库:
1) 1). 类包:struts.jar、commons-digester.jar、commons-beanutils.jar、commons-collections.jar、commons-logging.jar。
2) 2).加入struts-tiles.tld文件。 在web文件中配置<tablib>元素如:
<taglib>
<taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>
3) 3).在专门的XML文件中配置Ttile组件(如:tiles-defs.xml),这个文件位于WEB-INF目录下。
<definition name=”common” path=”/WEB-INF/pages/template.jsp”>
<put name=”menuTitle” value=”${menuTitle}” />
<put name=”workflow” value=”${workflow}” />
<put name=”header” value=”header.jsp” />
<put name=”breadcrumbs” value=”breadcrumbs.jsp” />
<put name=”graphics” value=”${graphics}” />
</definition>
<definition name=”net.tiles.yun” extends=”common”>
<put name=”menuTitle” value=”yunchat welcome you here” />
<put name=”graphics” value=”yun graphics” />
<put name=”message” value=”tiles.msg.001″ />
<put name=”workflow” value=”tt workflow” />
<put name=”breadcrumbs” value=”breadcrumbs.jsp” />
<put name=”header” value=”header.jsp” />
</definition>
4) 4).在Struts配置文件中配置TilesPlugin插件
<plug-in className=”org.apache.struts.tiles.TilesPlugin”>
<!– Path to XML definition file –>
<set-property property=”definitions-config” value=”/WEB-INF/tiles-defs.xml,/WEB-INF/tiles-defs-yun.xml” />
<!– Set Module-awareness to true –>
<set-property property=”moduleAware” value=”true” />
<set-property property=”definition-paser-validate”
value=”true” />
</plug-in>
definition-paser-validate参数:指定XML解析器是否验证Tiles配置文件。默认true;
5) 5).在web.xml文件中配置ActionServlet
为保证Web应用启动时加载TilesPlugin插件,应加入ActionServlet控制器,ActionServlet控制器在初始化时能加载所有的插件。
6) 6). 在JSP文件中插入Tiles组件,使用Tiles的组件属性。
4. 4. 在struts action中可以直接调用Tiles组件。
<action-mappings>
<action path=”/tiles_action” scope=”requests”
type=”TilesAction” validate=”true”>
<forward name=”success” path=”net.tiles.yun”
redirect=”false” />
</action>
<action path=”/tiles_action2” type=”TilesAction” parameter=”net.tiles.yun”>
</action>
</action-mappings>
5. 5.Tiles组件的组合:
<definition name=”common” path=”/WEB-INF/pages/template.jsp”>
<put name=”menuTitle” value=”tiles-definition” type=”definition” />
……
</definition>
<put>子元素的value属性指定被包含的Tiles组件的名字。Type属性设置为”definition”,表示value属性指定的是Tiles组件,而不是JSP文件。
6. 6. Tiles组件的扩展:
<definition name=”common” extends=”base-definition”>
extends属性指定被扩展的父类Tiles组件。
7. 7.Tiles在JSP页面的使用:
(1)插入到JSP页面中:
<tiles:insert page=”/layouts/commonLayout.jsp” flush=”true” />
(2)插入一个Tiles同时传递属性值:
<tiles:insert attribute=”header”>
<tiles:put name=”menuTitle” beanName=”menuTitle”/>
<tiles:put name=”graphics” beanName=”graphics”/>
</tiles:insert>
<tiles:insert attribute=”breadcrumbs”>
<tiles:put name=”workflow” beanName=”workflow” />
<tiles:put name=”message” beanName=”message” />
<tiles:put name=”graphics” beanName=”graphics” />
</tiles:insert>
(3)作为String来得到一个属性
<tiles:getAsString name=” title “>
(4)通过引用属性来插入Tiles
<tiles:insert attribute=”header”>