struts2通配符映射

應用程序越大,它裏面action mapping的數量也越多,經過使用通配符,咱們能夠將一些類似的mapping綁在一塊兒,用一個比較通用的mapping來表示,在前面關於action配置的那章裏面也提到了這個通配符的使用,這裏再系統的說一下。web

以下所示,有一個配置好了的action mappingapache

<actionapp

    name="/edit*"框架

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

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

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

</action>spa

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

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

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

*:能夠匹配0個或多個任意字符,可是不包括正斜槓」/」

**:能夠匹配0個或多個任意字符,包括正斜槓’’/」在內

/:反斜槓,轉義字符。

由於*不能匹配正斜槓,因此前面/editSubscription/add不會被匹配上。

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

相關文章
相關標籤/搜索