天天看點

struts2中Convention中的basePackage與locators配置種種

用了Convention插件來實作所謂的0配置, 

1. 

struts.convention.package.locators.basePackage=com.ZTest.web.action 

這個屬性用于約定Action 類的根包(這個包是Java類的包,而不是Struts.xml中配置的<package>節點) 

例如: 

在一個項目中有這樣一系列的Java 包,那麼當指定convention的這個屬性,Struts架構就會在你通路特定的URL時會自動的找到所要的請求的實作類。 

當你在浏覽器中輸入: http://localhost:8080/HelloWorld.action,Struts會自動的找到并執行com.ZTest.web.action.HelloWorldAction.java類。 

當你在浏覽器中輸入: http://localhost:8080/test/aaa.action,Struts會自動的找到并執行com.ZTest.web.action.test.aaaAction.java類。 

2. 

struts.convention.result.path=/WEB-INF/ruiri 

這個屬性用于約定Action類執行完畢以後傳回資源的結果路徑,###必須以 "/"開頭, 

例如: 

當你在浏覽器中輸入: http://localhost:8080/HelloWorld.action,Struts會自動的找到并執行com.ZTest.web.action.HelloWorldAction.java類,并放回到WEB-INF/ruiri/HelloWorld.jsp。 

當你在浏覽器中輸入: http://localhost:8080/test/aaa.action,Struts會自動的找到并執行com.ZTest.web.action.test.aaaAction.java類,,并放回到WEB-INF/ruiri/test/HelloWorld.jsp 。 

3. 

struts.convention.action.name.lowercase=false 

###是否将Action類轉換成小寫 

當一個類的類名是多個單詞組合起來的時候,例如HelloWolrdAction,如果指定了這個屬性,則通路的位址必須是: HelloWorld.action ,如果不是指定這個屬性則是: helloworld.action 

4. 

struts.convention.action.name.separator= 

這個屬性是約定當一個Java 類有多個單詞組合成的時候,映射的URL位址的時候通路的格式的分隔符。 

如果不指定這個屬性,Struts預設的分隔符是 “-”,例如 HelloWorldAction 則通路的URL是Hello-World.action 

如果指定這個屬性是上面的格式,則是沒有分隔符,會按照Java 類名直接映射,例如 HelloWorldAction 則通路的URL是HelloWorld.action 

struts.convention.default.parent.package=default 

這個屬性指定的是Strtus.xml中配置的<package>節點的父節點。(有什麼用?可能就是用于定義全局的Result吧,這個本人也沒深入的研究過) 

struts.convention.package.locators=action  

确定搜尋包的路徑。隻要是結尾為action的包都要搜尋。 

詳細講解一下這個屬性,因為我剛開始的時候被這個屬性搞暈了,希望我的解釋能幫助和我有過同樣疑問的友人。 

例如:我們有這樣一些類: 

com.ZTest.web.action.AAAAAction 

com.Ztest.web.action.BBBBAction 

com.Ztest.web.action.test/CCCCAction 

com.Ztest.web.action.test/DDDDAction 

com.Ztest.web.action.test/first/EEEEAction 

com.Ztest.web.action.test/first/FFFFAction 

如果,我設定這個屬性的值為 action 那麼 我們通路這幾個類得URL就是 

http://localhost:8080/ZTest/AAAA.action 

http://localhost:8080/ZTest/BBBB.action 

http://localhost:8080/ZTest/test/CCCC.action 

http://localhost:8080/ZTest/test/DDDD.action 

http://localhost:8080/ZTest/test/first/EEEE.action 

http://localhost:8080/ZTest/test/first/FFFF.action 

而每個URL對應的資源檔案必須是下面的格式:(按照本文中的result.path配置的結果) 

/WEB-INF/ruiri/AAAA.jsp 

/WEB-INF/ruiri/BBBB.jsp 

/WEB-INF/ruiri/test/CCCC.jsp 

/WEB-INF/ruiri/test/DDDD.jsp 

/WEB-INF/ruiri/test/first/EEEE.jsp 

/WEB-INF/ruiri/test/first/FFFF.jsp 

也就是說: 

struts.convention.package.locators=action就是相當于下面的解釋 

 類路徑                                   命名空間(struts.xml中配置的<package>節點) 

com.ZTest.web.action.AAAAAction            ->   / 

com.ZTest.web.action.test.CCCCAction       ->   /test 

com.ZTest.web.action.test.first.EEEEAction->   /test/first 

當然對應的資源的檔案路徑就是: 

/WEB-INF/ruiri/AAAA.jsp 

/WEB-INF/ruiri/test/CCCC.jsp 

/WEB-INF/ruiri/test/first/EEEE.jsp 

差別: 

struts.convention.package.locators=action  

确定搜尋包的路徑。隻要是結尾為action的包都要搜尋。 

struts.convention.package.locators.disable=false 

struts.convention.package.locators.basePackage=com.xxx.web.action 

basePackage按照預設不用配置,如果配置,隻會找以此配置開頭的包。 

locators及locators.basePackage都是一組以逗号分割的字元串。

繼續閱讀