首先,當我們學習一個框架的時,一般可以參考框架自帶的示例項目。例如struts2,剛入門的時候,可以參考其自帶的blank項目。當部署完這個項目後,開啟tomcat服務,在地址欄裡輸入請求的action路徑時,可以發現,雖然沒有給該action定義擴展名,但是地址裡輸入的action路徑沒有擴展名或者擴展名為action時都可以通過。為什麼呢?這是由struts2的默認配置屬性決定的。
常量的默認配置在struts2-core-2.1.8.1/org/apache/struts2/default.properties文件裡,像定義訪問action的默認擴展名、開發模式設置、i18n以及默認字符編碼等等,例如struts.action.extension=action,,。
應當註意的是,一般情況不要修改框架系統的原始文件,如果要更改默認的配置項,可以采用覆蓋的方式。struts.xml是struts2的基本配置文件之一。該文件內可以配置多個常量,以覆蓋默認的常量配置,例如<constant name="struts.action.extension" value="do,," />表示action的可用擴展名為do或者不用擴展名。
常量可以在下面多個文件中進行定義,struts2加載常量的搜索順序如下,後面的設置可以覆蓋前面的設置:
default.properties文件
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties(為瞭與webwork向後兼容而提供)
web.xml
下面列舉幾個常用的常量
### This can be used to set your default locale and encoding scheme
# struts.locale=en_US
struts.i18n.encoding=UTF-8//指定默認編碼
### This can be used to set your default locale and encoding scheme
# struts.locale=en_US
struts.i18n.encoding=UTF-8//指定默認編碼
# uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=
struts.multipart.maxSize=2097152//上傳文件大小限制
# uses javax.servlet.context.tempdir by default
struts.multipart.saveDir=
struts.multipart.maxSize=2097152//上傳文件大小限制
### Used by the DefaultActionMapper
### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do
### The blank extension allows you to match directory listings as well as pure action names
### without interfering with static resources.
struts.action.extension=action,,//指定處理請求的後綴
### Used by the DefaultActionMapper
### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do
### The blank extension allows you to match directory listings as well as pure action names
### without interfering with static resources.
struts.action.extension=action,,//指定處理請求的後綴
### Used by FilterDispatcher
### This is good for development where one wants changes to the static content be
### fetch on each request.
### NOTE: This will only have effect if struts.serve.static=true
### If true -> Struts will write out header for static contents such that they will
### be cached by web browsers (using Date, Cache-Content, Pragma, Expires)
### headers).
### If false -> Struts will write out header for static contents such that they are
### NOT to be cached by web browser (using Cache-Content, Pragma, Expires
### headers)
struts.serve.static.browserCache=true// www.aiwalls.com 指定是否緩存靜態資源,開發的時候最好關閉
### Used by FilterDispatcher
### This is good for development where one wants changes to the static content be
### fetch on each request.
### NOTE: This will only have effect if struts.serve.static=true
### If true -> Struts will write out header for static contents such that they will
### be cached by web browsers (using Date, Cache-Content, Pragma, Expires)
### headers).
### If false -> Struts will write out header for static contents such that they are
### NOT to be cached by web browser (using Cache-Content, Pragma, Expires
### headers)
struts.serve.static.browserCache=true//指定是否緩存靜態資源,開發的時候最好關閉
### when set to true, Struts will act much more friendly for developers. This
### includes:
### – struts.i18n.reload = true
### – struts.configuration.xml.reload = true
### – raising various debug or ignorable problems to errors
### For example: normally a request to foo.action?someUnknownField=true should
### be ignored (given that any value can come from the web and it
### should not be trusted). However, during development, it may be
### useful to know when these errors are happening and be told of
### them right away.
struts.devMode = false//開發時候設置為trus可以開發出更加詳細的信息
### when set to true, Struts will act much more friendly for developers. This
### includes:
### – struts.i18n.reload = true
### – struts.configuration.xml.reload = true
### – raising various debug or ignorable problems to errors
### For example: normally a request to foo.action?someUnknownField=true should
### be ignored (given that any value can come from the web and it
### should not be trusted). However, during development, it may be
### useful to know when these errors are happening and be told of
### them right away.
struts.devMode = false//開發時候設置為trus可以開發出更加詳細的信息
### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml//設置默認視圖,最好為simple
### Standard UI theme
### Change this to reflect which path should be used for JSP control tag templates by default
struts.ui.theme=xhtml//設置默認視圖,最好為simple
### Configuration reloading
### This will cause the configuration to reload struts.xml when it is changed
struts.configuration.xml.reload=false//設置為True一旦Struts.xml文件修改就自動加載
摘自 小憤青