程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts1.x系列教程(22):Tiles框架簡介

Struts1.x系列教程(22):Tiles框架簡介

編輯:關於JAVA

Tiles框架是Struts的一個插件。我們可以使用Tiles框架來進行頁面布局設計。Tiles框架提供了一種模板機制,它可以將網頁內容和布局分離,並允許先創建模板,然後在頁面中再插入具體的內容。

一、安裝Tiles框架

為了使用Tiles,我們必須首先在struts-config.xml文件中聲明Tiles,配置代碼如下:

<plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
</plug-in>

其中org.apache.struts.tiles.TilesPlugin類只需要設置一個definitions-config屬性。這個屬性值指向了一個定義文件tiles-defs.xml。這個定義文件的基本格式如下:

<?xml version="1.0" encoding="GBK" ?>
   <!DOCTYPE tiles-definitions PUBLIC
          "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
          "http://struts.apache.org/dtds/tiles-config_1_1.dtd">
   <tiles-definitions>
       <definition name="def1" path="/tiles/layout1.jsp">
           <put name="title" value="我的標題" />
           <put name="header" value="header.jsp" />
           ……
       </definition>
       <definition name="def2" path="/tiles/layout1.jsp" >
           ……
       </definition>
   </tiles-definitions>

其中<tiles-definitions>元素中可以包含多個<definition>子元素。我們還可以將一個定義文件拆成多個定義文件,如A-defs.xml、B-defs.xml和C-defs.xml。在為definitions-config屬性賦值時,如果有多個定義文件,中間用逗號(,)分割。如下面的代碼所示:

<set-property property="definitions-config" value="/WEB-INF/A-defs.xml, /WEB-INF/B-defs.xml, /WEB-INF/C-defs.xml " />

Tiles框架還有一個定制標簽庫。我們可以使用如下的taglib指令來聲明這個標簽庫:

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

二、<jsp:include>和<tiles:insert>標簽

由於在編寫Web程序的過程中,很多頁面會出現同樣的內容,如所有的頁面都使用同樣的的頁頭和頁尾。在JSP標簽庫中提供了一個include標簽可以將其他的頁面包含到當前的頁面中,如我們可以使用如下的代碼包含頁頭和頁尾。

……
   <jsp:include page = "header.jsp" />
   ……
   <jsp:include page = "footer.jsp" />
   ……

在Tiles框架的標簽庫中也提供了一個insert標簽。這個標簽也可以完成和include同樣的工作。如上述代碼也可以寫成如下形式:

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
   ……
   <tiles:insert page = "header.jsp" />
   ……
   <tiles:insert page = "footer.jsp" />
   ……

雖然include和insert標簽都可以很好地解決代碼重用問題,但是並不能完全避免代碼重復的問題。如很多使用include或insert標簽的頁面也擁有很多類似或相同的代碼。如使用css布局、用table、div等HTML元素進行位置控制等。如果想避免這些代碼的重復。光使用include或insert標簽是無法做到的。而要想做到這一點,就要使用下一篇文章中介紹的Tiles模板。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved