struts2學習:配置篇之通配符映射

應用程序越大,它裏面action mapping的數量也越多,通過使用通配符,我們可以將一些相似的mapping綁在一起,用一個比較通用的mapping來表示,在前面關於action配置的那章裏面也提到了這個通配符的使用,這裏再系統的說一下。

如下所示,有一個配置好了的action mapping

<action

    name="/edit*"

    class="org.apache.struts.webapp.example.Edit{1}Action">

    <result name="failure"path="/mainMenu.jsp"/>

    <result path="/{1}.jsp"/>

</action>

這個action mapping可以用匹配所有以/edit開頭的對action名稱,例如/editSubscriptioneditRegistration等等,但是/editSubscription/add不會被匹配上。被通配符所匹配的內容將會被替換到action mapping以及result的各個屬性中去,去取代{1}。比方說/editSubscription匹配上了,那麼其中一個resultpath屬性就會被框架認爲是Subscription.jsp

要注意的是,如果一個請求的url和多個action mapping匹配上了,那麼選擇最後面的那個執行,也就是說按照從後往前的順序進行匹配查找,有一個例外就是精確匹配優先,如果有一個action mapping沒用通配符和url給匹配上了,那麼優先選擇精確匹配,摺合servlet中的匹配原則是一樣的。

通配符中幾個特殊的標記,如下所述:

*:可以匹配0個或多個任意字符,但是不包括正斜槓”/”

**:可以匹配0個或多個任意字符,包括正斜槓’’/”在內

/:反斜槓,轉義字符。

因爲*不能匹配正斜槓,所以前面/editSubscription/add不會被匹配上。

action mapping中,被通配符所匹配上的值可以用符號{N}來訪問,其中N是一個19之間的數,用來表示代替第N個被匹配上的值,說通俗點就是第N*號所表示的內容,比方說通配符表達式是/edit*/add*/confirm*,它匹配上了/editOrder/addItem/confirmResult,那麼{1}就代表Order{2}就代表Item{3}就代表Result,依此類推。

 
發佈了113 篇原創文章 · 獲贊 6 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章