struts1中的tiles只算是apache的一个小插件 但是到struts2中tiles已经成为Apache的一个项目来研发,可见其重要性
下面的是配置文件
web.xml
<filter>
<filter-name>R</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>R</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- Tiles Config 添加监听器和配置文件-->
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<!-- Tiles Listener -->
<listener>
<listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
struts.xml
自己的包继承"tiles-default" 或者 添加<result-type>属性
<package name="R" extends="tiles-default">
<!-- <result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>-->
tiles.xml
注意红色的部分,添加的是tiles.不是jarkata之类的,因为添加别的话不能使用put-attribute只有tiles.可以使用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="in" template="/layout/basiclayout.jsp">
<put-attribute name="header" value="/public/index_header.jsp"/>
<put-attribute name="left" value="/public/login_left.jsp"/>
<put-attribute name="body" value="/index/login.action"/>
<put-attribute name="footer" value="/public/index_footer.jsp"/>
</definition>
</tiles-definitions>
tiles.dtl
随便找个tiles-jsp.jar文件中的META-INF文件下有个tld文件,这个文件夹下面的.tld文件就是直接复制就来就ok
1.在WEB-INF/lib下加入所需的jar包
commons-digester-1.6.jar,
tiles-core-2.0-20070207.130156-4.jar,
tiles-api-2.0-20070207.130156-4.jar,
struts2-tiles-plugin-2.0.6.jar,
struts2-core-2.0.6.jar
xwork-2.0.1.jar,
2. 以下内容添加到web.xml
<listener>
<listener-class>
org.apache.tiles.listener.TilesListener
</listener-class>
</listener>
3.在WEB-INF下添加和tiles.tld和tiles.xml文件,其中tiles.tld内容为tiles-core-2.0-20070207.130156-4.jar包中META_INF/tiles-core.tld的内容。
tiles.xml内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config.dtd">
<tiles-definitions>
<definition name="myapp.homepage" template="layout.jsp">
<put name="title" value="Tiles tutorial homepage" />
<put name="header" value="/tiles/header.jsp" />
<put name="menu" value="/tiles/menu.jsp" />
<put name="body" value="/tiles/cBody.jsp" />
<put name="footer" value="/tiles/footer.jsp" />
</definition>
</tiles-definitions>
4.struts.xml 为:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="tiles-default">
<action name="go" class="com.action.MyAction">
<!--result name="success">/next.jsp</result-->
<result name="success" type="tiles">myapp.homepage</result>
</action>
</package>
</struts>
红色部分根据自己项目定。注意extends="tiles-default"
5创建layout.jsp:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="WEB-INF/tiles.tld " prefix="tiles"%>
<html>
<head>
<title></title>
</head>
<body>
<table width="768px" height="800px" border="2" align="center">
<tr>
<td colspan="2" align="center" valign="top" width="768px" height="100px" bgcolor="#80ff80">
<tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td align="center" width="150px" height="800px" bgcolor="#00ff00">
<tiles:insertAttribute name="menu" />
</td>
<td align="right" width="618px" height="800px" bgcolor="#ff80c0">
<tiles:insertAttribute name="body" />
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#00ff40" height="100px">
<tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>
6.根据
<put name="title" value="Tiles tutorial homepage" />
<put name="header" value="/tiles/header.jsp" />
<put name="menu" value="/tiles/menu.jsp" />
<put name="body" value="/tiles/cBody.jsp" />
<put name="footer" value="/tiles/footer.jsp" />
在WebRoot下创建tiles目录和相应jsp文件