TAGLIB
Struts對Taglib進行了擴展, Struts提供了四種基本自定義Taglib以及兩種附加Taglib:
bean:struts-bean taglib包含在訪問bean和bean屬性時使用的tag,也包含一些消息顯示的tag。
html:struts-html taglib包含用來創建struts輸入表單的tag,和其它通常用來創建基於HTML用戶界面的tag。
logic:struts-logic taglib包含的tag用來管理根據條件生成輸出文本,和其它一些用來控制的信息。
template:struts-template taglib包含的tag用來定義模板機制。
tiles:Tiles插件,用於簡化jsp開發
nested: 而Nested標記庫的作用是讓以上這些基本標記庫能夠嵌套使用,發揮更大的作用。
使用taglib可以簡化jsp頁面的開發,使得jsp包含最少的代碼。
如,在JSP開發過程中,虛擬目錄是相對於Domain的。如果http://localhost/context1/test.jsp執行href="/”則會返回到http://localhost/,如何返回到http://localhost/context1/呢? 這樣我們就可以用<html:link page="/" >按照相對於虛擬目錄的url來定位。
I18n支持
如果要顯示一套支持i18n的界面,首先要定義一個ApplicationResource文件,將信息以key=value的形式放入。在struts-config.xml中指定resouces的地址,即可用<bean:message key="welcome">這樣的tag來顯示,而不需要將信息固化在JSP文件中。
TILES:
Tiles中對頁面的劃分有點象jakarta的另外一個項目Turbine中的TDK。增加了layout的概念。
其實就是把一個頁面劃分為幾塊。 通常的來說一個頁面大概可以劃分為如下幾塊:
head頁面頭部:存放一個運用的公共信息:logo等,如果是網站可能是最上面的一塊.
menu頁面菜單:放置一個運用中需要使用的菜單,或者在每一個頁面都使用的連接.
footer頁面尾部:如版權信息等.
body頁面主題內容:每個頁面相對獨立的內容.
如果按上面的劃分那對每一個頁面我們只要寫body裡面的內容,其他的就可以共享重用.
如果大多數頁面的布局基本相同我們甚至可以使用一個jsp文件根據不同的參數調用不同的body.
Tiles除了替代Template的基本模板功能外,還增加了布局定義、虛擬頁面定義和動態頁面生成等功能。
Tiles強大的模板功能能夠使頁面獲得最大的重用性和靈活性,此外可以結合Tiles配置文件中的頁面定義和Action的轉發邏輯,即你可以將一個Action轉發到一個在Tiles配置文件中定義的虛擬頁面,從而減少頁面的數量。比如,下表中的Action定義了一個轉發路徑,它的終點是tile.userMain,而後者是你在Tiles配置文件中定義的一個頁面。
EXCEPTION
異常處理在Struts1.1中得到了很好的支持
可以在配置文件中指定由誰來處理Action類中擲出的某種異常。按照以下步驟來完成該功能:
1 實現org.apache.struts.action.ExceptionHandler的子類,覆蓋execute方法,在該方法中處理異常並且返回一個ActionForward對象
2 在配置文件中配置異常處理對象,你可以配置一個全局的處理類或者單獨為每個Action配置處理類
下表就定義了一個全局的處理類CustomizedExceptionHandler,它被用來處理所有的異常。
<global-exceptions>
<exception
handler="com.yourcorp.CustomizedExceptionHandler"
key="global.error.message"
path="/error.jsp"
scope="request"
type="java.lang.Exception"/>
</global-exceptions>