struts-default.xml和default.properties是Struts2非常重要的兩個預設的設定檔
在org.apache.struts2包中的default.properties中定義了許多Struts2的全域屬性
我們可以在struts.xml中使用<constant/>修改這些全域常量,以實現我們的某種目的
其實它的大多數屬性都沒有必要修改,很多屬性也不必知道具體含義,因為很少用得上
除非極特殊情況,可能要用到一些生僻屬性,這時可以去Struts2官網上查看協助文檔
第33行的struts.i18n.encoding預設的UTF-8可以修改為GBK以解決上傳檔案時亂碼情況
第65行的struts.multipart.saveDir屬性,用來指定檔案上傳時所使用的臨時目錄
第66行的struts.multipart.maxSize屬性,用來設定上傳檔案的合計大小,預設為2MB
第63行的struts.multipart.parser屬性,用來指定Struts2所支援的三種檔案上傳的方式
預設使用的是jakarta,即使用commons-fileupload組件
若使用其它兩種上傳方式的話,同樣需要顯式引入它們的Jar檔案
但是通常情況下使用jakarta就可以,三者都是差不多的
第76行的struts.action.extension屬性,用來設定請求的尾碼名,預設值為action
我們同樣可以通過<constant/>標籤或struts.properties檔案重新設定它的尾碼值
修改尾碼值時,struts.xml中有關<action/>的配置是不需要任何更改的,應用會照常執行
第158行struts.custom.i18n.resources屬性,用來指定國際化的全域資源檔
比如<constant name="struts.custom.i18n.resources" value="message"/>
則所指定的國際化資源檔即message.properties,它應與struts.xml位於相同目錄中
準確來說,最後的目標是將該檔案儲存在//WebRoot//WEB-INF//classes//目錄下
若同時設定兩個資源檔,如<constant name="…i18n…" value="message,test"/>
那麼後面的資源檔中的key值將覆蓋前面的資源檔中的相同key值
Struts2的設定檔不僅僅包括struts.xml檔案,還有其它的,比如struts.properties
在org.apache.struts2.default.properties的第23行有如下說明
###(can be overridden by a struts.properties file in the root of the classpath)
即在classpath的根路徑下的一個叫做struts.properties的檔案可以覆蓋掉Struts的預設屬性
至此可以通過<constant/>或在src下建立struts.properties檔案修改Struts2全域屬性
不建議同時使用這兩種方式。因為若二者修改了同一屬性的話,還要考慮二者的優先順序
而且研究這兩種方式的優先順序高低,並沒有太大的實際意義。所以推薦只使用一種方式
另外還有一種方式可以實現初始化default.properties中的參數。但極力不建議大家使用
那就是在web.xml中通過<init-param/>標籤設定Struts2的全域常量
這種方式的缺點是:①繁瑣,配置一個屬性需要寫4行代碼。②不直觀。因此瞭解即可,沒必要掌握
但是在web.xml中配置的全域常量的優先順序卻要高於<constant/>和struts.properties