程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Struts2 struts2-convention-plugin(零配置)基礎

Struts2 struts2-convention-plugin(零配置)基礎

編輯:關於JSP

零配置並不是沒有配置,而是通過約定大於配置的方式,大量通過約定來調度頁面的跳轉而使得配置大大減少。   一、如何使用Convention 1. 將struts-Convention-plugin-2.1.6.jar文件復制到WEB-INF/lib路徑下 2. 對於Convention插件而言,它會自動搜索位於action,actions,struts,struts2包下的所有java類,Convention插件會把如下兩種java類當成Action處理: (1) 所有實現了com.opensymphony.xwork2.Action接口的java類 (2) 所有類名以Action結尾的java類   3. 映射Action的name時,遵循如下兩步規則: 1) 如果該Action類名包含Action後綴,將該Action類名的Action後綴去掉。否則不做任何處理。 2) 將Action類名的駝峰寫法(每個單詞首字母大寫、其他字母小寫的寫法)轉成中畫線寫法(所有字母小寫,單詞與單詞之間以中畫線隔開) 如:LoginAction映射的Acion的name屬性為login,GetBooks映射的Action的name的屬性為get-books,AddEmployeeAction映射的Action的name屬性為add-employee     下面是actiong和結果模版的映射關系: URL Result  File that could match Result Type /hello success /WEB-INF/content/hello.jsp Dispatcher /hello success /WEB-INF/content/hello-success.htm Dispatcher /hello success /WEB-INF/content/hello.ftl FreeMarker /hello-world input /WEB-INF/content/hello-world-input.vm Velocity /test1/test2/hello error /WEB-INF/content/test/test2/hello-error.html Dispatcher如:下面Action所在包被映射的命名空間如下: com.fun.actions.LoginAction 映射到 / com.fun.actions.myoffice.CarInfoAction 映射到 /myoffice com.fun.struts.myoffice.EntINfoAction 映射到 /myofiice   4. 默認情況下。Convention總會到WEB應用的WEB-INF/content路徑下定位物理資源,定位資源的約定是:actionRUL+resultCODE+suffix。當某個邏輯視圖找不到對應的試圖資源時,Convention會自動視圖使用ActionURL+suffix作為物理視圖資源。 如:actions.fore.LoginAction 返回success字符串時,Convention優先考慮使用WEB-INF/content/fore目錄下的login-success.jsp作為視圖資源。如果找不到該文件,login.jsp也可作為對應的試圖資源。如果返回input字符串,Convention會將WEB-INF/content/fore裡面查找login-input.jsp 5.Action鏈的約定 如果希望一個Action處理結束後不是進入一個試圖頁面,而是進行另一個Action形成的Action鏈。通過Convention插件則只需遵守如下三個約定即可。 1) 第一個Action返回的邏輯視圖字符串沒有對應的視圖資源 2) 第二個Action與第一個Action處在同一個包下 3) 第二個Action影射的URL為:firstActionURL+resultCODE 如,第一個Action為OneAction,裡面有個方法返回為“two”,那麼就得保證,WEB-INF/content/下沒有one.jsp或one-two.jsp 對於第二個action 它的名字應該是OneTwoAction,而對應的url應該是:“one-two.action”       幾個重要的常量 struts.convention.action.disableJarScanning---是否從包中搜索Action struts.convention.action.package--------Convention插件以該常量指定包作為根包 struts.convention.result.path ---設置Convention插件定位視圖資源的根路徑。默認值為/WEB-INF/content struts.convention.result.flatLayout—如果是為false則可以將試圖放置Action對應的目錄下,無需放入WEB-INF/content   注:   1) struts.Convention.exclude.packges:指定不掃描哪些包下的java類,位於這些包結構下的java類將不會自動映射成Action; 2) struts.convention.package.locators:Convention插件使用該常量指定的包作為搜尋Action的根包。對於actions.fore.LoginAction類,按約定原本應映射到/fore/login;如果將該常量設為fore,則該Action將會映射到/login 3) struts.convention.action.packages:Convention插件以該常量指定包作為根包來搜索Action類。Convention插件除了掃描action,actions,struts,struts2四個包的類以外,還會掃描該常量指定的一個或多個包,Convention會試圖從中發現Action類。 注意:struts.convention.package.locators和struts.convention.action.packages兩個常量的作用比較微妙,開發者在利用這兩個常量時務必小心。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved