Struts2約定



Struts2引入Convention(約定)插件支持零配置。約定優於配置

一、約定Action

1.安裝Convention插件

Struts2項目下的struts-convention-plugin-2.2.1.jar文件複製到Struts2應用的WEB-INF\lib路徑下即可,會搜索位於actionactionsstrutsstruts2包下的所有Java類,

Convention插件會把如下兩種Java類當成Action 處理:

(1)所有實現了com.opensymphony.xwork2.ActionJava類。

(2)所有類名以Action結尾的Java

Struts2Convention插件還允許設置如下三個常量:

(1)struts.convention.exclude.packages:指定不掃描哪些包下的Java

(2)struts.convention.package.locatorsConvention插件使用該常量指定的包作爲搜索Action根包。對於actions.lee.LoginAction類,按約定原本映射到/lee/login;如果將該常量設置爲lee,則該Action將會映射到/login

(3) struts.convention.action.packagesConvention插件以該常量指定包作爲根包來搜索Action。會搜索位於actionactionsstrutsstruts2包以及該常量定義的包下的所有Java類。

ActionURL映射

         (1)如果該Action類名包含Action後綴,將該Action類名的Action後綴去掉。否則不做任何處理。如org.actions.LoginAction映射到/login.action

         (2)Action類名的駝峯寫法轉成中劃線寫法,如org.actions.books.GetBooks映射到/books/get-books.action

二、約定Result

         Action處理用戶請求之後會返回一個字符串作爲邏輯視圖,該邏輯視圖必須映射到實際的物理視圖纔有意義。Convention默認也爲作爲邏輯視圖和物理視圖之間的映射提供了約定。

         下圖是Convention支持的一些映射實例:

三、Action鏈的約定

如果希望一個Action處理結束後不是進入視圖頁面,而是進行另一個Action形成Action鏈,則通過Convention插件只需遵守如下三個約定即可:

(1)第一個Action返回的邏輯視圖字符串沒有對應的視圖資源

(2)第二個Action與第一個Action處於同一個包下

(3)第二個Action映射的URL爲:firstactionName+ resultcode

四、自動重加載映射

配置Struts2的兩個常量(web.xmlstruts.xmlstruts.properties都可進行配置):

<!-- 配置Struts2應用處於開發模式 -->

<constant name=”struts.devMode” value=”true”/>

<!-- 配置Convention插件自動重加載映射 -->

<constant name=”struts.convention.classes.reload”value=”true”/>

五、Convention插件相關Annotation

Struts2Convention插件主要集中在管理ActionResult映射之上,而Struts2的配置文件除了管理ActionResult之外,還需要管理攔截器、異常處理等相關信息,Convention使用Annotation來管理這些配置。除此之外,Convention還允許使用Annotation管理ActionResult的配置,從而覆蓋Convention約定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章