struts -Tiles介绍
?來源:http://hithoper.blog.hexun.com/17860631_d.html
?
安裝和配置Tiles
在您能夠使用Tiles 框架之前,您必須確保它已安裝并正確的配置在web容器中。Tiles框架并不依賴于某種特定的容器,您要做的就是獲得所需的文件,并將它們放到web應用程序的正確位置上。
下載Tiles
Tiles 框架包含在struts發行版中。先前版本中,它位于contrib文件夾中,但現在是核心的一部分。您還可以在http://www.lifl.fr /~dumoulin/tiles/index.html找到最新的源程序、二進制發行版本,以及其它一些有用的信息。
安裝所需的JAR文件和相關文件
第一步是安裝所需文件。對于Tiles來說,以下文件必須位于WEB-INF/lib目錄中:
u?????? tiles.jar
u?????? commons-digester.jar
u?????? commons-beanutils.jar
u?????? commons-collections.jar
u?????? commons-logging.jar
如果您在使用struts,這些文件就已經存在了,此外您還需要安裝Tiles TLD文件到應用程序的WEB-INF目錄。
警告:不要為了避免將tiles.jar文件放到每個web應用程序的WEB-INF/lib目錄,而將它放到servlet容器的classpath路徑中,如果這樣做的話會導致拋出ClassNotFoundException異常。
您還應該將tiles-config.dtd文件放到WEB-INF 目錄。該DTD文件用來驗證Tiles 定義文件(它將在本章的后面部分講到)。
添加Tiles標簽庫
就象 其它的JSP標簽庫一樣,在您能使用它們之前,您必須將Tiles標簽庫加入web應用程序發布描述文件中。給web.xml文件增加如下taglib元素:
??<taglib-uri>/WEB-INF/tiles.tld</taglib-uri>
??<taglib-location>/WEB-INF/tiles.tld</taglib-location>
</taglib>
如果您在使用標準的struts標簽庫,那么taglib元素應該已經有了。每個需要使用Tiles標簽庫的頁面必須在頂部包含如下行:
配置Tiles和Struts協同工作
Tiles框架可以和struts一起使用,也可單獨使用。取決于您如何使用它,為web應用程序配置tiles可以有幾種選擇。因為本書是講struts的,所以我們的重點是如何將其捆綁到struts應用程序。
提 示:若使用tiles框架的先前版本,您必須在web.xml文件中配置一個叫做ActionComponentServlet的特殊 ActionServlet,而且在Struts的controller元素中還需配置一個RequestProcessor。現在這些不需了-現在有一 個tiles插件,它來完成所有的初始化。
如果您正計劃使用tiles,該插件是非常需要的。您也可不配置該插件而使用tiles庫和struts。但是,配置它也沒有什么害處,如果您以后決定使用tiles定義,它還可能節約您的時間。
在struts應用程序中加入tiles插件,請在struts配置文件中加入下列plug-in元素:
??<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
??<set-property property="definitions-debug" value="2" />
??<set-property property="definitions-parser-details" value="2" />
??<set-property property="definitions-parser-validate" value="true" />
</plug-in>
在plug-in元素中,您可以加入幾個set-property元素給Plugin類傳入附加的參數。definitions-config參數指定包含tiles定義的xml文件。如果使用了多個文件名,則它們之間用逗號分隔。
definitions-debug參數指定調試的層次,允許值為:
0 :不輸出調試信息。
1 :提供部分調試信息。
2 :提供完整的調試信息。
缺省值為0。
definitions-parser-details參數指定當定義文件被解析時所需要的調試信息的層次,該值傳給Commons Digester。所允許的值同definitions-debug參數,缺省值為0。
definitions-parser-validate參數指明解析器是否驗證Tiles配置文件,允許值為true和false,缺省值為true。
還有一個叫做definitions-factory-class的參數沒有顯示出來。您可以創建一個自定義工廠,然后在這里給出類名,缺省值為org.apache.struts.tiles.xmlDefinition.I18NfactorySet。
Tiles縱覽
Tiles 框架提供一種模板機制,它能將布局和內容的職責分離。本章前面描述的模板,允許您先創建模板,然后在運行時動態地將內容插入到布局中。如果您要根據國際 化、用戶喜好定制您的站點,或僅僅改變視感(這在每個網站遲早會發生的),您就會發覺模板是一個強有力的機制。Tiles框架具有如下特性:
u?????? 模板能力
u?????? 動態構建和裝載頁面
u?????? 視屏定義
u?????? 支持tile和布局重用
u?????? 支持國際化
u?????? 支持多通道
模板標簽庫已經存在于struts框架中相當長的時間了,這些標簽可讓您使用非常基本的模板方式在web應用程序中組織JSP頁面。雖然這些標簽對分離web應用程序的布局和內容很有幫助,但tiles框架走的更遠,它實際上是模板標簽庫的超集,具備許多其它特性。
提示:tiles框架先前被稱做Components,后來因為Component這個術語被濫用而改名。在tiles文檔和源程序中某些地方仍然在沿用老的名稱。
Cedric Dumoulin創立了tiles框架,它擴展了模板的概念,提供給開發人員在用JSP技術創建web應用程序時更大的靈活性和自由度。Web應用程序的 內容仍然用JSP頁面和JavaBeans驅動,但是布局由一個獨立的JSP頁面或XML文件(后面將提到)指定。
什么是tile?
Tile是web頁面的一個區域,一個頁面可以只有一個區域組成,或分解為幾個區域。圖14-1列舉了Storefront應用程序的一個例子。
圖14-1 Storefront應用程序的區域
一個JSP頁面通常由幾個區域或tile組成,關于頁面沒有什么特別的,僅僅是用在tiles框架中,并使用tiles標簽庫。
Tile 最重要的方面在于它是可復用的,對于布局和內容來說都是正確的。不同于大多數JSP頁面,tiles組件在應用程序中重復利用,甚至可能跨應用程序復用。 而且,tile不復雜。實際上,我們已經看到的大多數例子,包括例14-2到例14-4,都能歸類為tiles。
使用布局tile
在tiles的世界里,布局就是我們已經提及的模板。布局起著模板同樣的作用,即組合一組tile來指定頁面的格式。實際上,例14-2就是一個tile布局。Tiles和struts中包含的模板庫在語法上幾乎完全一樣。
提示:tiles框架是David Geary所定義的標準struts模板標簽的功能上的超集,但它提供更多的功能,進一步擴展了模板的概念。
布局也是受到高度評價的tiles。JSP頁面,甚至整個應用程序都能復用布局。通常建立一個布局庫,用于許多不同的項目中。Tiles框架自帶有幾個預建立的布局tiles,您可復用它或是根據需要修改它。Tiles框架包含的布局有:
u?????? Classic布局:具有頁頭、左列菜單、主體、和頁腳
u?????? Columns布局:具有多列,每列垂直堆疊
u?????? Center布局:具有頁頭、左幀、右幀、主體和頁腳
u?????? Menu布局:具有鏈接菜單
u?????? Tabs布局:
u?????? Vertical box布局:
由于tiles的主要目標之一是重用性,因此您可在應用程序中只需少許修改或不修改即可重用這些布局。當然您也可自由地根據需要定制布局。
規劃布局
提早規劃布局是非常重要的,在網站建立之后再決定外觀絕對不知一個好方法。通常由人性化團隊、產品管理或是web開發人員自身做這種決定。不管怎樣,您應該在開發之前規劃布局。
Storefront應用程序的缺省布局在例14-2中介紹了,該布局將作為例子貫穿本章。
傳參數給布局
例 14-2所示的布局tile是一般的,它并不知道itemdetail.jsp或其它頁面的內容。這樣做是有目的的,它能讓我們在很多頁面中復用該布局。 與在布局頁面中硬編碼不同,內容是在運行時作為參數傳遞給布局頁面的。讓我們來看看storefront應用程序的signin.jsp tile,如例14-5所示:
例14-5: storefront應用程序的signin.jsp tile
<tiles:insert page="../layouts/storefrontDefaultLayout.jsp" flush="true">
??<tiles:put name="header" value="../common/header.jsp"/>
??<tiles:put name="menubar" value="../common/menubar.jsp"/>
??<tiles:put name="body-content" value="../security/signin-body.jsp"/>??
??<tiles:put name="copyright" value="../common/copyright.jsp"/>????????
</tiles:insert>
例14-5中的put標簽的作用是提供布局tile,布局由包含的insert標簽指定。例14-5中的name屬性的值必須和所期望的布局tile相吻合。
提示:insert標簽有一可選ignore屬性,它可以允許當找不到屬性所引用的文件時什么東西都不輸出。缺省時,如果屬性所指定的文件沒有提供的話,運行時異常將拋出。
總結
以上是生活随笔為你收集整理的struts -Tiles介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ext Ajax:如何调用Ext.Aja
- 下一篇: linux常用命令有哪些?linux命令