struts.xml的一些配置:html
Struts2中constant標籤的一些配置:java
.......................................web
<constant name="struts.convention.default.parent.package" value="cmcc-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
<constant name="struts.convention.package.locators.basePackage" value="com.cmcc.bdp.action" />
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>spring
.......................................apache
下面是一部分constant的講解:瀏覽器
用了Convention插件來實現所謂的0配置,緩存
1 、(配置訪問的URL的默認的路徑). <constant name="struts.convention.package.locators.basePackage" value="com.ZTest.web.action" />
這個屬性用於約定Action 類的根包(這個包是Java 類的包,而不是Struts.xml中配置的<package>節點)
例如:
在一個項目中有這樣一系列的Java 包,那麼當指定convention的這個屬性,Struts 框架就會在你訪問特定的URL時會自動的找到所要的請求的實現類。
當你在瀏覽器中輸入:http://localhost:8080/XXX/HelloWorld.action ,Struts會自動的找到並執行com.ZTest.web.action.HelloWorldAction.java類。
當你在瀏覽器中輸入:http://localhost:8080/XXX/test/aaa.action ,Struts會自動的找到並執行com.ZTest.web.action.test.aaaAction.java類。 服務器
二、返回資源的結果路徑. struts.convention.result.path=/WEB-INF/ruiri app
這個屬性用於約定Action類執行完畢之後返回資源的結果路徑,###必須以 "/" 開頭, <constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
例如:
當你在瀏覽器中輸入:http://localhost:8080/HelloWorld.action ,Struts會自動的找到並執行com.ZTest.web.action.HelloWorldAction.java類,框架
並放回到/WEB-INF/ruiri/HelloWorld.jsp。
當你在瀏覽器中輸入:http://localhost:8080/XXX/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.java,若是指定了這個屬性,則訪問的地址必須是: HelloWorld.action,若是不是指定這個屬性則是: helloworld.action
4. struts.convention.action.name.separator=
這個屬性是約定當一個Java 類有多個單詞組合成的時候,映射的URL地址的時候訪問的格式的分隔符。
若是不指定這個屬性,Struts默認的分隔符是 「-」,例如 HelloWorldAction 則訪問的URL 是Hello-World.action
若是指定這個屬性是上面的格式,則是沒有分隔符,會按照Java 類名直接映射,例如 HelloWorldAction 則訪問的URL 是HelloWorld.action
5. struts.convention.default.parent.package=default
這個屬性指定的是Strtus.xml中配置的 <package>節點的父節點。(有什麼用?可能就是用於定義全局的Result吧,這個本人也沒深刻的研究過)
6. 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都是一組以逗號分割的字符串
Demo:
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//ApacheSoftware Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.convention.default.parent.package"value="cmcc-default" />
<constant name="struts.convention.package.locators"value="action" />
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
<constant name="struts.convention.package.locators.basePackage"value=‘XXX.XX.XXX.action’/>
<constant name="struts.i18n.encoding" value="utf-8" />
<constant name="struts.enable.DynamicMethodInvocation"value="true"/>
<package name="cmcc-default" extends="convention-default">
<!-- 基於paramsPrepareParamsStack,增長store interceptor保證actionMessage在redirect後不會丟失 -->
<interceptors>
<interceptor name="loginInter" class="com.cmcc.bdp.base.LoginInterceptor"/>
<interceptor name="userRole" class="com.cmcc.bdp.base.UserRoleInterceptor"/>
<interceptor-stack name="webStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
<interceptor-ref name="loginInter"/>
<interceptor-ref name="userRole"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="webStack" />
<global-results>
<result name="notRoleError" >/WEB-INF/jsp/common/notRoleError.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception"result="error"/>
</global-exception-mappings>
</package>
</struts>
--------------------------------------------------------------------------------------------
關於更多的constant的配置能夠參考下面的信息:
struts.serve.static.browserCache
該屬性設置瀏覽器是否緩存靜態內容。當應用處於開發階段時,咱們但願每次請求都得到服務器的最新響應,則可設置該屬性爲false。
struts.enable.DynamicMethodInvocation
該屬性設置Struts 2是否支持動態方法調用,該屬性的默認值是true。若是須要關閉動態方法調用,則可設置該屬性爲false。
struts.enable.SlashesInActionNames
該屬性設置Struts 2是否容許在Action名中使用斜線,該屬性的默認值是false。若是開發者但願容許在Action名中使用斜線,則可設置該屬性爲true。
struts.tag.altSyntax
該屬性指定是否容許在Struts 2標籤中使用表達式語法,由於一般都須要在標籤中使用表達式語法,故此屬性應該設置爲true,該屬性的默認值是true。
struts.devMode
該屬性設置Struts 2應用是否使用開發模式。若是設置該屬性爲true,則能夠在應用出錯時顯示更多、更友好的出錯提示。該屬性只接受true和flase兩個值,該屬性的 默認值是false。一般,應用在開發階段,將該屬性設置爲true,當進入產品發佈階段後,則該屬性設置爲false。
struts.i18n.reload
該屬性設置是否每次HTTP請求到達時,系統都從新加載資源文件。該屬性默認值是false。在開發階段將該屬性設置爲true會更有利於開發, 但在產品發佈階段應將該屬性設置爲false。
提示 開發階段將該屬性設置了true,將能夠在每次請求時都從新加載國際化資源文件,從而可讓開發者看到實時開發效果;產品發佈階段應該將該屬性設置爲 false,是爲了提供響應性能,每次請求都須要從新加載資源文件會大大下降應用的性能。
struts.ui.theme
該屬性指定視圖標籤默認的視圖主題,該屬性的默認值是xhtml。
struts.ui.templateDir
該屬性指定視圖主題所須要模板文件的位置,該屬性的默認值是template,即默認加載template路徑下的模板文件。
struts.ui.templateSuffix
該屬性指定模板文件的後綴,該屬性的默認屬性值是ftl。該屬性還容許使用ftl、vm或jsp,分別對應FreeMarker、 Velocity和JSP模板。
struts.configuration.xml.reload
該屬性設置當struts.xml文件改變後,系統是否自動從新加載該文件。該屬性的默認值是false。
struts.velocity.configfile
該屬性指定Velocity框架所需的velocity.properties文件的位置。該屬性的默認值爲 velocity.properties。
struts.velocity.contexts
該屬性指定Velocity框架的Context位置,若是該框架有多個Context,則多個Context之間以英文逗號(,)隔開。
struts.velocity.toolboxlocation
該屬性指定Velocity框架的toolbox的位置。
struts.url.http.port
該屬性指定Web應用所在的監聽端口。該屬性一般沒有太大的用戶,只是當Struts 2須要生成URL時(例如Url標籤),該屬性才提供Web應用的默認端口。
struts.url.https.port
該屬性相似於struts.url.http.port屬性的做用,區別是該屬性指定的是Web應用的加密服務端口。
struts.url.includeParams
該屬性指定Struts 2生成URL時是否包含請求參數。該屬性接受none、get和all三個屬性值,分別對應於不包含、僅包含GET類型請求參數和包含所有請求參數。
struts.custom.i18n.resources
該屬性指定Struts 2應用所須要的國際化資源文件,若是有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開。
struts.dispatcher.parametersWorkaround
對於某些Java EE服務器,不支持HttpServlet Request調用getParameterMap()方法,此時能夠設置該屬性值爲true來解決該問題。該屬性的默認值是false。對於 WebLogic、Orion和OC4J服務器,一般應該設置該屬性爲true。 struts.freemarker.manager.classname 該屬性指定Struts 2使用的FreeMarker管理器。該屬性的默認值是org.apache.struts2.views.freemarker.FreemarkerManager,這是 Struts 2內建的FreeMarker管理器。 struts.freemarker.wrapper.altMap 該屬性只支持true和false兩個屬性值,默認值是true。一般無需修改該屬性值。 struts.xslt.nocache 該屬性指定XSLT Result是否使用樣式表緩存。當應用處於開發階段時,該屬性一般被設置爲true;當應用處於產品使用階段時,該屬性一般被設置爲false。 struts.configuration.files 該屬性指定Struts 2框架默認加載的配置文件,若是須要指定默認加載多個配置文件,則多個配置文件的文件名之間以英文逗號(,)隔開。該屬性的默認值爲struts- default.xml,struts-plugin.xml,struts.xml,看到該屬性值,讀者應該明白爲何Struts 2框架默認加載struts.xml文件了。 struts.objectFactory 該屬性指定Struts 2中的action由哪一個容器建立 struts.convention.default.parent.package:這個常量表示缺省的包名是什麼,由於在實際應用中,咱們經常定義一個缺省的包,這個包中定義了一大堆的攔截器等等,而後其餘的包繼承自這個包。這個常量能夠配也能夠不配; struts.convention.package.locators:這個常量表示你的action類的java包的包名的後綴是啥:好比action。這個常量也能夠不配; struts.convention.package.locators.basePackage:這個常量表示你的action類的java包package的名字是啥;這個常量也能夠不配; <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--指定Web應用的默認編碼集.該屬性對於處理中文請求參數很是有用,對於獲取中文請求參數值,應該將該屬性值設置爲GBK或者GB2312; 提示:當設置該參數爲GBK時,至關於調用HttpServletRequest的setCharacterEncoding方法. > <constant name="struts.i18n.encoding" value="UTF-8" /> <!--指定Struts 2默認的ObjectFactory Bean,該屬性默認值是spring. > <constant name="struts.objectFactory" value="spring" /> <!--指定Spring框架的自動裝配模式, 該屬性的默認值是name, 即默認根據Bean的name屬性自動裝配. > <constant name="struts.objectFactory.spring.autoWire" value="name" /> <!--該屬性指定整合Spring框架時,是否緩存Bean實例,該屬性只容許使用true和false兩個屬性值,它的默認值是true.一般不建議修改該屬性值. > <constant name="struts.objectFactory.spring.useClassCache" value="true" /> <!--該屬性指定處理multipart/form-data的MIME類型(文件上傳)請求的框架,該屬性支持cos,pell和jakarta等屬性值, 即分別對應使用cos的文件上傳框架,pell上傳及common-fileupload文件上傳框架.該屬性的默認值爲jakarta. 注意:若是須要使用cos或者pell的文件上傳方式,則應該將對應的JAR文件複製到Web應用中.例如,使用cos上傳方式,則須要本身下載cos框架的JAR文件,並將該文件放在WEB-INF/lib路徑下. > <constant name="struts.multipart.parser" value="jakarta" /> <!--該屬性指定上傳文件的臨時保存路徑,該屬性的默認值是javax.servlet.context.tempdir. > <constant name="struts.multipart.saveDir" value="" /> <!--該屬性指定Struts 2文件上傳中整個請求內容容許的最大字節數. > <constant name="struts.multipart.maxSize" value="1000000000000" /> <!--該屬性指定須要Struts 2處理的請求後綴,該屬性的默認值是action,即全部匹配*.action的請求都由Struts 2處理.若是用戶須要指定多個請求後綴,則多個後綴之間以英文逗號(,)隔開. > <constant name="struts.action.extension" value="do" /> <!--該屬性設置是否經過JAR文件提供靜態內容服務,該屬性只支持true和false屬性值,該屬性的默認屬性值是true. > <constant name="struts.serve.static" value="true" /> <!--該屬性設置瀏覽器是否緩存靜態內容.當應用處於開發階段時,咱們但願每次請求都得到服務器的最新響應,則可設置該屬性爲false. > <constant name="struts.serve.static.browserCache" value="true" /> <!--該屬性設置Struts 2應用是否使用開發模式.若是設置該屬性爲true,則能夠在應用出錯時顯示更多、更友好的出錯提示.該屬性只接受true和flase兩個值,該屬性的默認值是false.一般,應用在開發階段,將該屬性設置爲true,當進入產品發佈階段後,則該屬性設置爲false. > <constant name="struts.devMode" value="false" /> <!--該屬性設置是否每次HTTP請求到達時,系統都從新加載資源文件(容許國際化文件重載).該屬性默認值是false.在開發階段將該屬性設置爲true會更有利於開發,但在產品發佈階段應將該屬性設置爲false. 提示:開發階段將該屬性設置了true,將能夠在每次請求時都從新加載國際化資源文件,從而可讓開發者看到實時開發效果;產品發佈階段應該將該屬性設置爲false,是爲了提供響應性能,每次請求都須要從新加載資源文件會大大下降應用的性能. > <constant name="struts.i18n.reload" value="false" /> <!--該屬性指定視圖標籤默認的視圖主題,該屬性的默認值是xhtml. > <constant name="struts.ui.theme" value="simple" /> <!--該屬性指定模板文件的後綴,該屬性的默認屬性值是ftl.該屬性還容許使用ftl、vm或jsp,分別對應FreeMarker、Velocity和JSP模板. > <constant name="struts.ui.templateSuffix" value="ftl" /> <!--該屬性設置當struts.xml文件改變後,系統是否自動從新加載該文件.該屬性的默認值是false. > <constant name="struts.configuration.xml.reload" value="false" /> <!--該屬性指定Struts 2應用所須要的國際化資源文件,若是有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開. > <constant name="struts.custom.i18n.resources" value="nationz" /> <!--對於某些Java EE服務器,不支持HttpServlet Request調用getParameterMap()方法,此時能夠設置該屬性值爲true來解決該問題.該屬性的默認值是false.對於WebLogic、Orion和OC4J服務器,一般應該設置該屬性爲true. > <constant name="struts.dispatcher.parametersWorkaround" value="false" /> <!--指定是否緩存FreeMarker模版。默認值false。> <constant name="struts.freemarker.templatesCache" value="true" /> <!--該屬性只支持true和false兩個屬性值,默認值是true.一般無需修改該屬性值. > <constant name="struts.freemarker.wrapper.altMap" value="true" /> <!--該屬性指定XSLT Result是否使用樣式表緩存.當應用處於開發階段時,該屬性一般被設置爲true;當應用處於產品使用階段時,該屬性一般被設置爲false. > <constant name="struts.xslt.nocache" value="false" /> <!--該屬性指定Struts 2框架默認加載的配置文件,若是須要指定默認加載多個配置文件,則多個配置文件的文件名之間以英文逗號(,)隔開.該屬性的默認值爲struts-default.xml,struts-plugin.xml,struts.xml,看到該屬性值,因此應該明白爲何Struts 2框架默認加載struts.xml文件了. > <constant name="struts.configuration.files" value="struts-default.xml,struts-plugin.xml" /> <!--設置映射器是否老是選擇完整的名稱空間。該屬性的默認值時false。> <constant name="struts.mapper.alwaysSelectFullNamespace" value="false" /> <!--設置Convention插件定位視圖資源的根路徑。默認值爲/WEB-INF/content> <constant name="struts.convention.result.path" value="/WEB-INF/content/" /> <!--Convention插件以該常量指定包做爲根包> <constant name="struts.convention.action.package" value="default" /> <!--是否從包中搜索Action> <constant name="struts.convention.action.disableScanning" value="false"/> <!-- 官方只說明在jboss下須要設置,狀況不明 --> <constant name="struts.convention.exclude.parentClassLoader" value="true" /> <constant name="struts.convention.action.fileProtocols" value="jar,zip" /> <!--包括哪些jar包中的action。逗號分割字符串。> <constant name="struts.convention.action.includeJars" value=".*?/_wl_cls_gen.*?jar(!/)?" /> <!--肯定搜索包的路徑。只要是結尾爲action的包都要搜索。> <constant name="struts.convention.package.locators" value="action" /> </struts>