首先,當我們學習一個框架的時,一般可以參考框架自帶的示例項目。例如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
下面列舉幾個常用的常量
[java]
- ### This can be used to set your default locale and encoding scheme
- # struts.locale=en_US
- struts.i18n.encoding=UTF-8//指定默認編碼
[java]
- # uses javax.servlet.context.tempdir by default
- struts.multipart.saveDir=
- struts.multipart.maxSize=2097152//上傳文件大小限制
[java]
- ### 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,,//指定處理請求的後綴
[java]
- ### 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//指定是否緩存靜態資源,開發的時候最好關閉
[java]
- ### 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可以開發出更加詳細的信息
[java]
- ### Standard UI theme
- ### Change this to reflect which path should be used for JSP control tag templates by default
- struts.ui.theme=xhtml//設置默認視圖,最好為simple
[java]
- ### Configuration reloading
- ### This will cause the configuration to reload struts.xml when it is changed
- struts.configuration.xml.reload=false//設置為True一旦Struts.xml文件修改就自動加載