Tiles組件html
tiles-iconfig.xmljava
Tiles是一個JSP佈局框架。web
Tiles框架爲建立Web頁面提供了一種模板機制,它能將網頁的佈局和內容分離。它用模板定義網頁佈局,每一個頁面模板都是一個簡單的 JSP 頁,它定義了一些由佔位符組成的外形,以放置內容。執行時,Tiles 將會用相應的內容來替換佔位符,所以,建立整個頁面即造成佈局。Tiles框架是創建在JSP的include指令基礎上的,但它提供了比JSP的include指令更強大的功能。Tiles框架具備以下特性:spring
1. 建立可重用的模板apache
2. 動態構建和裝載頁面mvc
3. 定義可重用的Tiles組件框架
4. 支持國際化。jsp
接下來就介紹Tiles框架的基本使用。ide
<tiles-definitions>標籤內主要的子節點就是<definition>標籤,這個標籤屬性以下:
佈局
屬性 |
|
|
|
|
名稱 |
是否必須 |
值必須 |
值類型 |
說明 |
name |
true |
true |
java.lang.String |
指定將要建立的一個definition bean的訪問名稱。這個必須有的。 |
template |
false |
true |
java.lang.String |
哪個文件是模板文件,這個模板文件後面會介紹。 |
role |
false |
true |
java.lang.String |
若是配置了這個值的話,須要role的值相等,這個definition才被有效訪問,這個功能我沒有深究,也不推薦使用,建議你們創建本身更完善的權限控制管理。固然歡迎朋友們完善role應用的示例,tiles自帶role的示例,有興趣的人去讀一下就明白了。 |
extends |
false |
true |
java.lang.String |
繼承哪個definition,值是你要繼承的definition的name的值。高使用率的屬性。 |
preparer |
false |
true |
java.lang.String |
呵,我沒使用,若是你要使用的話,要寫一個實現他的Prepare接口的類,做用就是在展示你定義的頁面前會先執行你的prepare。 |
應用程序佈局
咱們的目標是咱們Spring3HelloWorld應用程序添加頁眉,頁腳和菜單。如下將是相同的佈局。
所需JAR包
上述表中突出顯示的jar文件要添加新的Tiles集成項目。
在Spring mvc 中配置Tiles框架
要配置Tiles,在spring-servlet.xml中配置一個TilesConfig的<bean>。打開spring-servlet.xml,並添加下面的代碼<beans></beans>標記之間。
WEB-INF/spring-servlet.xml: 1 <bean id="viewResolver" 2 class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 3 <property name="viewClass"> 4 <value> 5 org.springframework.web.servlet.view.tiles2.TilesView 6 </value> 7 </property> 8 </bean> 9 <bean id="tilesConfigurer" 10 class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 11 <property name="definitions"> 12 <list> 13 <value>/WEB-INF/tiles.xml</value> 14 </list> 15 </property> 16 </bean>
經過上面定義的參數.在WEB-INF中寫一個tiles的配置文件"tiles.xml"這個xml爲咱們的web項目定義Tiles
WEB-INF/tiles.xml:
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE tiles-definitions PUBLIC 3 "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" 4 "http://tiles.apache.org/dtds/tiles-config_2_0.dtd"> 5 <tiles-definitions> 6 <definition name="base.definition" 7 template="/WEB-INF/jsp/layout.jsp"> 8 <put-attribute name="title" value="" /> 9 <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" /> 10 <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" /> 11 <put-attribute name="body" value="" /> 12 <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" /> 13 </definition> 14 15 <definition name="contact" extends="base.definition"> 16 <put-attribute name="title" value="Contact Manager" /> 17 <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" /> 18 </definition> 19 20 </tiles-definitions>
在這裏,咱們有tiles.xml定義模板base.definition。該佈局包含的屬性,如頭,標題,主體,菜單和頁腳。而後擴展和佈局的新關聯頁面。咱們覆蓋默認的佈局改變Body和Title的內容。
建立咱們的JSP文件
咱們寫一個layout.jsp做爲咱們web項目的佈局頁面而後引入相應的頁面
WEB-INF/jsp/layout.jsp 1 <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 3 "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title><tiles:insertAttribute name="title" ignore="true" /></title> 8 </head> 9 <body> 10 <table border="1" cellpadding="2" cellspacing="2" align="center"> 11 <tr> 12 <td height="30" colspan="2"><tiles:insertAttribute name="header" /> 13 </td> 14 </tr> 15 <tr> 16 <td height="250"><tiles:insertAttribute name="menu" /></td> 17 <td width="350"><tiles:insertAttribute name="body" /></td> 18 </tr> 19 <tr> 20 <td height="30" colspan="2"><tiles:insertAttribute name="footer" /> 21 </td> 22 </tr> 23 </table> 24 </body> 25 </html> WEB-INF/jsp/header.jsp 26 <h1>Header</h1> WEB-INF/jsp/menu.jsp 27 <span style="font-size: 14px;"><p>Menu</p></span> WEB-INF/jsp/footer.jsp <span style="font-size: 14px;"><p>Copyright <code class="xml plain">©</code>Zemo.com</p></span> 全部工做準備就緒部署就好了