struts2基於Convention插件的約定映射使用


一、首先說明一點:所謂的基於Convention插件的約定優於配置的使用,並不是嚴格意義上的零配置,struts.xml文件並不能完全舍棄。

獲得Convention插件功能,所必需的jar包有:|asm-x.x.jar|asm-commons-x.x.jar|struts2-convention-plugin-x.x.jar|

如果將struts2-config-browser-plugin-x.x.jar放入項目中,則可以通過http://{ip}:{port}/{Application}/config-browser/actionNames.action來查看應用中的映射關系

其中常用的配置信息有

Convention插件的常量
struts.convention.action.disableJarScanning 設置是否從Jar包里搜索Action類。如果開發者喜歡將Acion類打包成JAR,則應將該常量設為true。默認值為true。
struts.convention.action.packages Convention插件以該常量指定包做為根包來搜索Action類
struts.convention.result.path 設置Convention插件定位仕途資源的根路徑。默認值為/WEB-INF/content
 struts.convention.result.flatLayout  如果設置為false,則可以將是土頁面放置到Action對應的目錄下(無須放入WEB-INF/content)
 struts.convention.action.suffix  Convention搜索Action類的類名后綴,默認值為Action
 struts.convention.action.disableScanning  是否禁止通過包掃描Action。默認值是false
 struts.convention.action.mapAllMatches 設置即使沒有@Action注解,依然創建Action影射。默認值為false 
 struts.convention.action.checkImplementsAction  設置是否將實現了Action接口的類映射成Action,默認值是false
 struts.convention.default.parent.package  設置Convention映射的Action所在包的默認父包,默認值是convention-default
 struts.convention.action.name.lowercase  設置映射Action時,是否將Action的name屬性值轉換為所有字母小寫,默認值是false
 struts.convention.action.name.separator  設置映射Action時指定Acion的name屬性值各單詞之間的分隔符,默認值是中划線
 struts.convention.package.locators   Convention插件使用該常量指定的包做為搜索Action的根包。默認值是action,actions,struts,struts2
 struts.convention.package.locators.disable  指定禁止從Action的根包里搜尋Action。默認值是false
 struts.convention.exclude.packages  指定排除在搜索Action之外的包。默認值為org.apache.struts.*,org.apache.struts2.*,
 struts.convention.packae.locators.basePackage  如果指定了該常量,Convention只會從以該常量值開始的包中搜索Action類
 struts.convention.relative.result.types  指定Convention映射Result時默認支持的結果類型,默認值是dispatcher,velocity,freemarker
 struts.convention.redirect.to.slash  設置是否重定向到斜線(/)。例如用戶請求/foo,但/foo不存在時,如果設置該常量為true則可重定向到/foo/。默認值是true

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、每個Action的name屬性,根據該Action的類名映射,映射Action的name時,遵循如下兩步規則。

1.如果該Action類名包含Action后綴,將該Action類名的Action后綴去掉。否則不做任何處理。

2.將Action類名的駝峰寫法轉成中划線寫法,所有字母小寫。

例如:LoginAction映射的Action的name屬性為login,GetBooks映射的Action的name屬性為get-books,AddEmployeeAction映射的Action的name屬性為add-employee。

 

三、Action處理用戶請求以后會返回一個字符串做為邏輯視圖,該邏輯視圖必需映射到實際的物理視圖。Convention默認也為作為邏輯視圖和物理視圖之間的映射提供了約定。

默認情況下,Convention總會到Web應用的WEB-INF/content路徑下定位物力資源,定位資源的約定時actionName+resultcode+suffix。當某個邏輯視圖找不到對應的物理視圖資源時,Convention會自動試圖使用actionName+suffix作為物理視圖資源。

 

四、Action處理結束后如果不是進入視圖頁面,而是進入另外一個Action形成Action鏈的話,則通過Convention插件只需要遵守如下三個約定即可。

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

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

3.第二個Action映射的URL為:firstactionName+resultcode

例如第一個Action類名為FirstAction,並且返回second字符串,則第二個Action的類名為FirstSecondAction,且兩個Action在同一個包下,且視圖資源中沒有first-second.jsp或者first.jsp的物理視圖資源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM