1. 程式人生 > >- 朱智文的專欄

- 朱智文的專欄

<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的實現類
例子:、 <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstruts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--指定Web應用的預設編碼集.該屬性對於處理中文請求引數非常有用,對於獲取中文請求引數值,應該將該屬性值設定為GBK或者GB2312 提示:當設定該引數為GBK時,相當於呼叫HttpServletRequestsetCharacterEncoding方法> <constantname="struts.i18n.encoding"value="UTF-8"/> <!--指定Struts2預設的ObjectFactoryBean,該屬性預設值是spring.> <constant name="struts.objectFactory"value="spring"/> <!--指定Spring框架的自動裝配模式,該屬性的預設值是name,即預設根據Beanname屬性自動裝配.> <constantname="struts.objectFactory.spring.autoWire"value="name"/> <!--該屬性指定整合Spring框架時,是否快取Bean例項,該屬性只允許使用truefalse兩個屬性值,它的預設值是true.通常不建議修改該屬性值.> <constant name="struts.objectFactory.spring.useClassCache"value="true"/> <!--該屬性指定處理multipart/form-dataMIME型別(檔案上傳)請求的框架,該屬性支援cospelljakarta等屬性值,即分別對應使用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.> <constantname="struts.multipart.saveDir"value=""/> <!--該屬性指定Struts2檔案上傳中整個請求內容允許的最大位元組數.> <constant name="struts.multipart.maxSize"value="1000000000000"/> <!--該屬性指定需要Struts2處理的請求字尾,該屬性的預設值是action,即所有匹配*.action的請求都由Struts2處理. 如果使用者需要指定多個請求字尾,則多個字尾之間以英文逗號()隔開.> <constant name="struts.action.extension"value="do"/> <!--該屬性設定是否通過JAR檔案提供靜態內容服務,該屬性只支援truefalse屬性值,該屬性的預設屬性值是true.> <constantname="struts.serve.static"value="true"/> <!--該屬性設定瀏覽器是否快取靜態內容.當應用處於開發階段時,我們希望每次請求都獲得伺服器的最新響應,則可設定該屬性為false.> <constant name="struts.serve.static.browserCache"value="true"/> <!--該屬性設定Struts2應用是否使用開發模式.如果設定該屬性為true,則可以在應用出錯時顯示更多、更友好的出錯提示. 該屬性只接受trueflase兩個值,該屬性的預設值是false.通常,應用在開發階段,將該屬性設定為true,當進入產品釋出階段後,則該屬性設定為false.> <constant name="struts.devMode"value="false"/> <!--該屬性設定是否每次HTTP請求到達時,系統都重新載入資原始檔(允許國際化檔案過載).該屬性預設值是false. 在開發階段將該屬性設定為true會更有利於開發,但在產品釋出階段應將該屬性設定為false. 提示:開發階段將該屬性設定了true,將可以在每次請求時都重新載入國際化資原始檔,從而可以讓開發者看到實時開發效果; 產品釋出階段應該將該屬性設定為false,是為了提供響應效能,每次請求都需要重新載入資原始檔會大大降低應用的效能.> <constant name="struts.i18n.reload"value="false"/> <!--該屬性指定檢視標籤預設的檢視主題,該屬性的預設值是xhtml.> <constantname="struts.ui.theme"value="simple"/> <!--該屬性指定模板檔案的字尾,該屬性的預設屬性值是ftl.該屬性還允許使用ftlvmjsp,分別對應FreeMarkerVelocityJSP模板.> <constant name="struts.ui.templateSuffix"value="ftl"/> <!--該屬性設定當struts.xml檔案改變後,系統是否自動重新載入該檔案.該屬性的預設值是false.> <constantname="struts.configuration.xml.reload"value="false"/> <!--該屬性指定Struts2應用所需要的國際化資原始檔,如果有多份國際化資原始檔,則多個資原始檔的檔名以英文逗號()隔開.> <constant name="struts.custom.i18n.resources"value="nationz"/> <!--對於某些JavaEE伺服器,不支援HttpServlet Request呼叫getParameterMap()方法,此時可以設定該屬性值為true來解決該問題. 該屬性的預設值是false. 對於WebLogicOrionOC4J伺服器,通常應該設定該屬性為true.> <constantname="struts.dispatcher.parametersWorkaround"value="false"/> <!--指定是否快取FreeMarker模版.預設值false.> <constant name="struts.freemarker.templatesCache"value="true"/> <!--該屬性只支援truefalse兩個屬性值,預設值是true.通常無需修改該屬性值.> <constantname="struts.freemarker.wrapper.altMap"value="true"/> <!--該屬性指定XSLTResult是否使用樣式表快取.當應用處於開發階段時,該屬性通常被設定為true;當應用處於產品使用階段時, 該屬性通常被設定為false.> <constantname="struts.xslt.nocache"value="false"/> <!--該屬性指定Struts2框架預設載入的配置檔案,如果需要指定預設載入多個配置檔案,則多個配置檔案的檔名之間以英文逗號()隔開. 該屬性的預設值為struts-default.xmltruts-plugin.xmlstruts.xml,看到該屬性值,所以應該明白為什麼Struts2框架預設載入struts.xml檔案了.> <constantname="struts.configuration.files"value="struts-default.xml,struts-plugin.xml"/> <!--設定對映器是否總是選擇完整的名稱空間.該屬性的預設值時false.> <constant name="struts.mapper.alwaysSelectFullNamespace"value="false"/> <!--設定Convention外掛定位檢視資源的根路徑.預設值為/WEB-INF/content> <constantname="struts.convention.result.path"value="/WEB-INF/content/"/> <!--Convention外掛以該常量指定包作為根包> <constant name="struts.convention.action.package"value="default"/> <!--是否從包中搜索Action> <constantname="struts.convention.action.disableScanning"value="false"/> <!--官方只說明在jboss下需要設定,情況不明--> <constant name="struts.convention.exclude.parentClassLoader"value="true"/> <constantname="struts.convention.action.fileProtocols"value="jar,zip"/> <!--包括哪些jar包中的action.逗號分割字串.> <constant name="struts.convention.action.includeJars"value=".*?/_wl_cls_gen.*?jar(!/)?"/> <!--確定搜尋包的路徑.只要是結尾為action的包都要搜尋.> <constantname="struts.convention.package.locators"value="action"/> </struts>

意思是 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路徑下的模板檔案。