一說明 Struts
以後增加了Tiles包使得struts在頁面的處理方面多了一種選擇
並且更容易實現代碼的重用
Tiles中對頁面的劃分有點象jakarta的另外一個項目Turbine中的TDK
增加了layout的概念
其實就是把一個頁面劃分為幾塊
通常的來說一個頁面大概可以劃分為如下幾塊
head頁面頭部:存放一個運用的公共信息
logo等
如果是網站可能是最上面的一nu頁面菜單:放置一個運用中需要使用的菜單
或者在每一個頁面都使用的連接
footer頁面尾部:如版權信息等
body頁面主題內容:每個頁面相對獨立的內容
如果按上面的劃分那對每一個頁面我們只要寫body裡面的內容
其他的就可以共享重用
如果大多數頁面的布局基本相同我們甚至可以使用一個jsp文件根據不同的參數調用不同的body
二Tiles配置和基本配置文件介紹 Tiles有一個配置文件:tiles
defs
xml
tiles
defs
xml定義了每一個頁面的組成元素和形式
下面我將說明如下所示的一個tiles
defs
xml文件
tiles
defs
xml
<tiles
definitions>
<!
定義/layouts/classicLayout
jsp的組成名稱為site
mainLayout
>
<!
後面將附/layouts/classicLayout
jsp的內容
>
<definition name=
site
mainLayout
path=
/layouts/classicLayout
jsp
>
<put name=
title
value=
Tiles Blank Site
/>
<put name=
header
value=
/tiles/common/header
jsp
/>
<put name=
menu
value=
nu
bar
/>
<!
menu的組成為nu
bar對應的頁面
>
<put name=
footer
value=
/tiles/common/footer
jsp
/>
<put name=
body
value=
/tiles/body
jsp
/>
</definition>
<!
定義site
index
page
繼承site
mainLayout
>
<definition name=
site
index
page
extends=
site
mainLayout
>
<put name=
title
value=
Tiles Blank Site Index
/>
<put name=
body
value=
/tiles/body
jsp
/>
<!
以上兩個元素將替換site
mainLayout中的元素
>
</definition>
<definition name=
nu
bar
path=
/layouts/vboxLayout
jsp
>
<putList name=
list
>
<add value=
nu
links
/>
<add value=
nu
documentation
/>
</putList>
</definition>
</tiles
definitions>
附
/layouts/classicLayout
jsp
<html>
<head>
<title><tiles:getAsString name=
title
/>
</title>
</head>
<body bgcolor=
#ffffff
text=
#
link=
#
alink=
#
vlink=
#
>
<table border=
width=
%
cellspacing=
>
<tr>
<td colspan=
><tiles:insert attribute=
header
/></td>
</tr>
<tr>
<td width=
valign=
top
>
<tiles:insert attribute=
menu
/>
</td>
<td valign=
top
align=
left
>
<tiles:insert attribute=
body
/>
</td>
</tr>
<tr>
<td colspan=
>
<tiles:insert attribute=
footer
/>
</td>
</tr>
</table>
</body>
</html>
在web
xml裡面配置tiles
配置完後對應struts action servlet的配置如下:
web
xml
<!
Action Servlet Configuration
>
<servlet>
<servlet
name>action</servlet
name>
<!
Specify servlet class to use:
Struts
x: ActionComponentServlet
Struts
: ActionServlet
no Struts: TilesServlet
>
<servlet
class>org
apache
struts
action
ActionServlet</servlet
class>
<!
Tiles Servlet parameter
Specify configuration file names
There can be several comma
separated file names
>
<init
param>
<param
name>definitions
config</param
name>
<param
value>/WEB
INF/tiles
defs
xml</param
value>
</init
param>
<!
Tiles Servlet parameter
Specify Tiles debug level
O : no debug information
: debug information
: more debug information
>
<init
param>
<param
name>definitions
debug</param
name>
<param
value>
</param
value>
</init
param>
<!
Tiles Servlet parameter
Specify Digester debug level
This value is passed to Digester
O : no debug information
: debug information
: more debug information
>
<init
param>
<param
name>definitions
parser
details</param
name>
<param
value>
</param
value>
</init
param>
<!
Tiles Servlet parameter
Specify if xml parser should validate the Tiles configuration file
true : validate
DTD should be specified in file header
false : no validation
>
<init
param>
<param
name>definitions
parser
validate</param
name>
<param
value>true</param
value>
</init
param>
<!
Struts configuration
if Struts is used
>
<init
param>
<param
name>config</param
name>
<param
value>/WEB
INF/struts
config
xml</param
value>
</init
param>
<init
param>
<param
name>validate</param
name>
<param
value>true</param
value>
</init
param>
<init
param>
<param
name>debug</param
name>
<param
value>
</param
value>
</init
param>
<init
param>
<param
name>detail</param
name>
<param
value>
</param
value>
</init
param>
<load
on
startup>
</load
on
startup>
</servlet>
三使用Tiles 如果已經配置好tiels
defs
xml
接下來就可以在jsp文件中使用這些定義了
有如下的方式使用tiles
:
<tiles:insert definition=
site
mainLayout
flush=
true
/>
插入site
mainLayout標記的一頁
<tiles:insert template=
/tutorial/basic/myFramesetLayout
jsp
>
<tiles:put name=
title
content=
My first frameset page
direct=
true
/>
<tiles:put name=
header
content=
/tutorial/common/header
jsp
direct=
true
/>
<tiles:put name=
footer
content=
/tutorial/common/footer
jsp
direct=
true
/>
<tiles:put name=
menu
content=
/tutorial/basic/menu
jsp
direct=
true
/>
<tiles:put name=
body
content=
/tutorial/basic/helloBody
jsp
direct=
true
/>
</tiles:insert>
/tutorial/basic/myFramesetLayout
jsp
<html>
<head>
<title><tiles:get name=
title
/></title>
</head>
<frameset rows=
*
>
<frame src=
<%=request
getContextPath()%><tiles:get name=
header
/>
name=
header
>
<frame src=
<%=request
getContextPath()%><tiles:get name=
body
/>
name=
body
>
<frame src=
<%=request
getContextPath()%><tiles:get name=
footer
/>
name=
footer
>
</frameset>
</html>
插入/tutorial/basic/myFramesetLayout
jsp
並把title的值設定為:My first frameset page
header設定為/tutorial/common/header
jsp
四後記 Tiles的使用在他的文檔裡面寫的比較詳細
以上是一些簡單和基本的使用
具體的文檔可以看Struts裡面的一個tiles
documentation
war的包
但即使是這個包也不是很全
可以通過上的的連接到作者的主頁上去找
個人覺得使用Tiles在做企業運用的時候可能不如在做網站那樣更能體現優越性
但在系統開始設計的時候考慮並規劃好整個UI
那在修改和維護的時候將節省不少的工作量
因為通常UI的確定在代碼編寫結束和完成
所有盡可能的使用多個子頁面構成一個頁面
後面的美化和維護就比直接維護一個很大的頁面容易
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28594.html