package節(jié)點(diǎn)是整個(gè)配置的核心部分。每個(gè)package,從語義上講,其實(shí)代表了每一個(gè)獨(dú)立的模塊。在這個(gè)模塊中,你可以定義隸屬于這個(gè)模塊的行為方式,而與其他的模塊沒有關(guān)系。所以,每個(gè)package都有獨(dú)立的interceptor、result-type和action的定義,絕大多數(shù)的Runtime配置定義都是通過package節(jié)點(diǎn)實(shí)現(xiàn)的。接下來我們就來詳細(xì)討論一下package中的屬性和子節(jié)點(diǎn)。
1. name
name屬性為每個(gè)package設(shè)置一個(gè)唯一的標(biāo)識(shí),這個(gè)標(biāo)識(shí)在所有的package定義中不能重復(fù)。
2. abstract
標(biāo)識(shí)這個(gè)package的定義是一個(gè)抽象定義,也就是允許他僅包含聲明式的定義,而不需要在package定義中包含action的定義。
3. extends
通過使用extends,你可以指定本package繼承另外一個(gè)package的所有的配置。當(dāng)某個(gè)package繼承了另外一個(gè)package的所有配置,那么你就無需對(duì)父package中已經(jīng)聲明過的配置定義做再次的定義。
同時(shí),如果重復(fù)定義父package中已聲明過的配置定義,那么這些重復(fù)定義聲明將覆蓋父package中的相關(guān)定義。
4. namespace
namespace的作用:對(duì)于action配置進(jìn)行邏輯劃分。
如果我們不為package節(jié)點(diǎn)指定namespace,Struts2默認(rèn)使用一個(gè)空字符串作為默認(rèn)的namespace。當(dāng)然,也可以使用"/"等字符串來表示namespace。
定義package命名空間 該命名空間影響到url的地址,例如此命名空間為/test那么訪問是的地址為http://localhost:8080/struts2/test/XX.action
Struts2在根據(jù)URL進(jìn)行尋址的時(shí)候,使用以下的步驟:
1) 根據(jù)URL進(jìn)行Namespace和ActionName的計(jì)算
2) 根據(jù)計(jì)算的得到的Namespace和ActionName查找package節(jié)點(diǎn)中相應(yīng)配置
3) 如果查找失敗,則查找Namespace為空,ActionName為整個(gè)URL的配置
聯(lián)系客服