- 朱智文的專欄
<constant name="struts.objectFactory" value="spring" />
先看例子,再解釋:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 把它設定為開發模式,釋出時要設定為false -->
<constant name="struts.devMode" value="true" />
<!-- 設定在class被修改時是否熱載入,釋出時要設定為false -->
<constant name="struts.convention.classes.reload" value="true"/>
<!-- 自動動態方法的呼叫,使用這個設定後可以這樣呼叫:action!method -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 指定jsp檔案所在的目錄地址 -->
<constant name="struts.convention.result.path" value="/WEB-INF/content/" />
<!-- 使用struts-default預設的轉換器,如果是rest的使用:rest-default,rest需要rest的jar外掛 -->
<constant name="struts.convention.default.parent.package" value="struts-default"/>
<!-- 用於配置包名字尾。預設為action、actions、struts-->
<constant name="struts.convention.package.locators" value="actions" />
<!-- 用於配置類名字尾,預設為Action,設定後,Struts2只會去找這種字尾名的類做對映 -->
<constant name="struts.convention.action.suffix" value="Action"/>
<!-- 設定即使沒有@Action註釋,依然建立Action對映。預設值是false。因為Convention-Plugin是約定優於配置的風格,
可以不通過註解根據預先的定義就能訪問相應Action中的方法 -->
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<!-- 自定義jsp檔案命名的分隔符 -->
<constant name="struts.convention.action.name.separator" value="-" />
<!-- 國際化資原始檔名稱 -->
<constant name="struts.custom.i18n.resources" value="i18n" />
<!-- 是否自動載入國際化資原始檔 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 瀏覽器是否快取靜態內容 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 上傳檔案大小限制設定 -->
<constant name="struts.multipart.maxSize" value="-1" />
<!-- 主題,將值設定為simple,即不使用UI模板。這將不會生成額外的html標籤 -->
<constant name="struts.ui.theme" value="simple" />
<!-- 編碼格式 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
</struts>
基礎Constants
- struts.devMode 可選值true,false (預設false),在開發模式下,struts2的動態重新載入配置和資原始檔的功能會預設生效。同時開發模式下也會提供更完善的日誌支援。
- struts.i18n.reload 可選值true,false(預設值依賴於struts.devMode),是否自動重新載入本地的資原始檔。
- struts.i18n.encoding 主要用於設定請求編碼(預設值(UTF-8)) ,Head和Include標籤的解析編碼。 資源和配置檔案的解析編碼。
- struts.configuration.xml.reload 可選值true,false(預設值依賴於struts.devMode)是否自動重新載入XML配置檔案
- struts.action.extension 設定struts的Action請求的字尾,支援多個時以逗號隔開。
- struts.action.excludePattern 設定struts所排除的url(通過正則表示式匹配)(支援多個,以逗號隔開)
- struts.tag.altSyntax 可選值true,false(預設true) 是否支援ognl表示式
- struts.url.http.port 設定生成URL所對應的http埠
- struts.url.https.port 設定生成URL所對應的https埠
- struts.url.includeParams 可選值 none, get, all (預設get),設定URL是否包含引數,以及是否只包含GET方式的引數。
- struts.locale 設定struts2預設的locale,決定使用哪個資原始檔。
- struts.ui.templateDir 該屬性指定檢視主題所需要模板檔案的位置,該屬性的預設值是template,即預設載入template路徑下的模板檔案
- struts.ui.theme 該屬性指定檢視標籤預設的檢視主題,該屬性的預設值是xhtml。
- struts.ui.templateSuffix 該屬性指定模板檔案的字尾,該屬性的預設屬性值是ftl。該屬性還允許使用ftl、vm或jsp,分別對應FreeMarker、Velocity和JSP模板
- struts.multipart.saveDir 設定上傳臨時檔案的預設目錄
- struts.multipart.maxSize 設定上傳的臨時檔案的最大限制
- struts.objectFactory.spring.autoWire 可選值(name, type, auto, constructor,name)(預設name),設定spring的自動裝配方式,只有引入spring外掛後才有效。
- struts.objectFactory.spring.autoWire.alwaysRespect (預設false)設定是否總是以自動裝配策略建立物件。
- struts.objectFactory.spring.useClassCache (預設false)物件工廠是否使用類快取,開發模式無效。
- struts.xslt.nocache (預設為false)設定XsltResult是否不是用快取。
- struts.custom.properties 設定使用者的自定義屬性檔名列表(用,隔開)
- struts.custom.i18n.resources 設定使用者自定義的資原始檔路徑列表(用,隔開)
- struts.serve.static (預設false) 設定是否支援靜態資源請求(要求url在struts或static下)
- struts.serve.static.browserCache (預設false) 是否在靜態資源響應中設定快取。只有在支援靜態資源時有效。
- struts.el.throwExceptionOnFailure (預設false)是否在解析el表示式或無法找到屬性時丟擲RuntimeException
- struts.ognl.logMissingProperties (預設false)是否日誌無發找到的屬性
- struts.ognl.enableExpressionCache 是否快取ognl解析的表示式。
- struts.enable.DynamicMethodInvocation (預設false)是否支援動態的方法呼叫,在URL上通過!method指定方法。
- struts.enable.SlashesInActionNames 在URL中的Action段中是否支援斜線
- struts.mapper.alwaysSelectFullNamespace (預設false) 是否總是用最後一個斜線前的URL段作為namespace
核心物件Constants
- struts.actionProxyFactory 設定ActionProxy的實體工廠,該工廠同時也生成預設的ActionInvoctation
- struts.xworkConverter 設定XWorkConverter物件,該物件用於獲取各種型別的轉換器。
- struts.unknownHandlerManager 設定UnknownHandlerManager的實現類,用於處理無法找到方法等異常。
- struts.multipart.handler 設定mutipartRequest的handler (預設是jakarta)對應類,org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest
- struts.mapper.class 可選值(struts,composite,restful,restful2)設定URL解析且對映到ACTION的實現,(預設struts).
- struts.mapper.prefixMapping 通過URL字首對映到對應的Mapper,格式為urlPrefix1:mapperName2,urlPrefix2:mapperName2。必須新增mapperClass為org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper,並指定struts.mapper.class為該mapper。
- struts.mapper.composite 設定是否支援複合(多個)actionMapper,mapperName用逗號隔開。必須配置struts.mapper.class 為composite 才會生效
- struts.mapper.idParameterName 用於Restful2ActionMapper作為URL中id所對應的parameterName
- struts.ognl.allowStaticMethodAccess (預設false)設定ognl表示式是否支援靜態方法。
- struts.configuration 設定struts2的Settings類。(2.1.2後不再使用)
- struts.urlRenderer 設定struts2的URL render(用於生成的URL),(預設struts),類名org.apache.struts2.components.ServletUrlRenderer
- struts.objectFactory 設定struts2的物件工廠,預設(struts),類名org.apache.struts2.impl.StrutsObjectFactory,當引入struts2-spring外掛之後,則被修改為org.apache.struts2.spring.StrutsSpringObjectFactory
- struts.xworkTextProvider 設定struts2的資原始檔內容提供類的實現。預設為com.opensymphony.xwork2.TextProviderSupport
- struts.actionValidatorManager 設定ActionValidatorManager 的實現類。
- struts.valueStackFactory 設定struts2的ValueStack工廠的實現。
- struts.reflectionProvider 設定ReflectionProvider的實現類
- struts.reflectionContextFactory 設定ReflectionContextFactory的實現類
- struts.patternMatcher 設定PatternMatcher的實現類
- struts.staticContentLoader 設定StaticContentLoader的實現類
意思是 struts的action 由spring,進行例項化
struts.objectFactory這個屬性用於說明Struts2的物件池建立工廠,Struts2也有自己的物件池,就像Spring那樣,在配置檔案中你可以引用物件池中的物件,你可以藉助於Spring中的物件池,當想要得到Spring中的物件池時,申明struts.objectFactory為Spring的物件池構建工廠....
struts.serve.static.browserCache該屬性設定瀏覽器是否快取靜態內容。當應用處於開發階段時,我們希望每次請求都獲得伺服器的最新響應,則可設定該屬性為false。
struts.enable.DynamicMethodInvocation該屬性設定Struts2是否支援動態方法呼叫,該屬性的預設值是true。如果需要關閉動態方法呼叫,則可設定該屬性為false。
struts.enable.SlashesInActionNames該屬性設定Struts2是否允許在Action名中使用斜線,該屬性的預設值是false。如果開發者希望允許在Action名中使用斜線,則可設定該屬性為true。
struts.tag.altSyntax 該屬性指定是否允許在Struts2標籤中使用表示式語法,因為通常都需要在標籤中使用表示式語法,故此屬性應該設定為true,該屬性的預設值是true。
struts.devMode該屬性設定Struts2應用是否使用開發模式。如果設定該屬性為true,則可以在應用出錯時顯示更多、更友好的出錯提示。該屬性只接受true和flase兩個值,該屬性的預設值是false。通常,應用在開發階段,將該屬性設定為true,當進入產品釋出階段後,則該屬性設定為false。
struts.i18n.reload該屬性設定是否每次HTTP請求到達時,系統都重新載入資原始檔。該屬性預設值是false。在開發階段將該屬性設定為true會更有利於開發,但在產品釋出階段應將該屬性設定為false。
struts.configuration.files該屬性指定Struts2框架預設載入的配置檔案,如果需要指定預設載入多個配置檔案,則多個配置檔案的檔名之間以英文逗號(,)隔開。該屬性的預設值為struts-default.xml,struts-plugin.xml,struts.xml,看到該屬性值,讀者應該明白為什麼Struts2框架預設載入struts.xml檔案了。
struts.custom.i18n.resources該屬性指定Struts2應用所需要的國際化資原始檔,如果有多份國際化資原始檔,則多個資原始檔的檔名以英文逗號(,)隔開。
struts.url.includeParams該屬性指定Struts2生成URL時是否包含請求引數。該屬性接受none、get和all三個屬性值,分別對應於不包含、僅包含GET型別請求引數和包含全部請求引數。
struts.ui.templateDir該屬性指定檢視主題所需要模板檔案的位置,該屬性的預設值是template,即預設載入template路徑下的模板檔案。