首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 2 整合 Apache Tiles 3 完整配置教學

     編輯:Java 相關知識

依賴 JAR 包清單

Struts 2 核心 (6 個)

  • commons-logging-1.0.4.jar
  • commons-fileupload-1.2.1.jar
  • ognl-2.6.11.jar
  • struts2-core-2.1.6.jar
  • xwork-2.1.2.jar
  • freemarker-2.3.13.jar

Tiles 整合 (7 個)

  • struts2-tiles-plugin-2.1.6.jar
  • tiles-api-2.0.6.jar
  • tiles-core-2.0.6.jar
  • tiles-jsp-2.0.6.jar
  • commons-digester-1.8.jar
  • commons-collections-3.2.jar
  • commons-beanutils-1.7.0.jar

配置步驟

1. 複製 TLD 檔

將 tiles-jsp-2.0.6.jar 內的 tiles-jsp.tld 複製至 WEB-INF/tiles-jsp.tld。

2. 定義 Tiles 佈局

WEB-INF/tiles.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
  "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
  "https://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
  <definition name="xixi.haha" template="/layout.jsp">
    <put-attribute name="header" value="/head.jsp" />
    <put-attribute name="sidebar" value="/sidebar.jsp" />
    <put-attribute name="content" value="/content.jsp" />
    <put-attribute name="footer" value="/foot.jsp" />
  </definition>
</tiles-definitions>

3. web.xml 啟動 Tiles 容器

<context-param>
  <param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>
  <param-value>org.apache.struts2.tiles.StrutsTilesContainerFactory</param-value>
</context-param>
<context-param>
  <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
  <param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<listener>
  <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

4. struts.xml 設定結果類型

<struts>
  <package name="default" extends="tiles-default">
    <action name="XXAction" class="com.XXAction">
      <result name="success" type="tiles">xixi.haha</result>
    </action>
  </package>
</struts>
  • extends="tiles-default" 繼承內建 Tiles 結果類型攔截器。
  • type="tiles" 告訴 Struts 將結果名稱視為 Tiles 定義名。

5. 佈局頁面

layout.jsp

<%@ taglib uri="/WEB-INF/tiles-jsp.tld" prefix="tiles" %>
<table>
  <tr><td><tiles:insertAttribute name="header" /></td></tr>
  <tr><td><tiles:insertAttribute name="sidebar" /></td></tr>
  <tr><td><tiles:insertAttribute name="content" /></td></tr>
  <tr><td><tiles:insertAttribute name="footer" /></td></tr>
</table>

6. 片段頁面

建立 head.jsp、sidebar.jsp、content.jsp、foot.jsp,內容自定。

7. 測試頁面

index.jsp

<form action="XXAction.action" method="post">
  <input type="submit" value="送出" />
</form>

常見問題排查

現象原因與解決
找不到 Tiles 定義檢查 tiles.xml 路徑、definition name 拼寫、web.xml listener 是否載入
JSP 標籤報錯確認 tiles-jsp.tld 已放入 WEB-INF,且 layout.jsp 引用正確 URI
Struts 2.5+ 版本Tiles 整合包改為 struts2-tiles-plugin,DTD 升級至 3.0,屬性名 put-attribute 不變

總結

Struts 2 + Tiles 透過「定義組合」實現頁面佈局復用:tiles.xml 定義模板與片段對應,Action 返回定義名,layout.jsp 用 <tiles:insertAttribute> 組裝。關鍵在於 JAR 版本對應、TLD 位置、web.xml 容器啟動、struts.xml 繼承 tiles-default。掌握此流程,可輕鬆構建結構清晰、易維護的企業級 Web 應用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved