新版本中的註解配置是要依賴一個struts2-convention-plugin-2.1.8.1.jar的包,而這個包會默認依次檢索包名裏含有struts,struts2,action,actions的包,而後它會對實現了Action接口以及類名以Action結尾的這些類,做爲Action來進行處理。 spa
它的映射規則是這樣的,對於以Action結尾的的類,去掉Action,取剩下的部分,將全部的字母轉換爲小寫,若是有駝峯式的寫法,則用"-"鏈接符來鏈接不一樣的單詞,這是此插件的默認方式。最終轉換以後的就是請求地址,下面看一個例子說明: 插件
com.yirong.user.UserAction 這個類按照上面的規則,那麼它的請求地址就應該是去掉後面的Action,前面的User所有轉換成小寫,那麼最後的結果就是 /user.action xml
但咱們平時通常還有命名空間的問題,在這裏面是若是你的包名裏面在struts,sturts2,action,action2的後面還有其它的話,那麼後面的部分就默認爲命名空間,仍是看例子: 接口
com.yirong.action.other.UserAction 按上面所說的那麼這個最終的請求地址就爲:/other/user.action io
咱們還常常使用駝峯命名法,而它的默認解析規則爲用"-"鏈接符來鏈接不一樣的單詞,如: struts2
com.yirong.action.UserManagerAction 這個請求地址就爲:/user-manager.action 配置
還有一種狀況,若是你的包名裏同時含有多個關鍵字,那麼默認將按照我上面寫的順序來解析,仍是來看例子: plugin
com.yirong.struts.action.UserAction 這個裏面就同時包含struts與action而默認struts的優先級高那麼後面的action就做爲普通的字符(默認也就是命名空間)來處理,因此請求地址就爲:/action/user.action,而若是是: 命名空間
com.yirong.action.struts.UserAction (由於struts的優先級高)最終的結果就爲:/user.action 請求
那麼若是咱們不想按照它默認的這幾種關鍵字來檢索呢?有辦法,那就是經過struts.xml的常量配置來修改它檢索的關鍵字:
<constant name="struts.convention.package.locators" value="yirong" />
這樣就讓它默認的檢索爲包名裏是否含有yirong來斷定action了