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