1. 程式人生 > >struts2的struts.xml中的一些常量配置

struts2的struts.xml中的一些常量配置

                在struts.xml中覆蓋default.properties中的全域性配置 

    我們修改全域性配置的時候,可以使用使用struts.properties檔案來覆蓋default.properties檔案中的內容。實際上我們可以不用建立struts.properties檔案也可以做到覆蓋default.properties檔案中的配置,就是直接在strtuts.xml檔案中使用<constant>配置然後,

在struts.xml,這個配置項比較多。

形如:<constant name="" value=""/>

<constantname="struts.i18n.reload"value="true"/>  配置是否在每次HTTP請求到達時都重新載入資原始檔,看到“i18n”我以為是編碼或者國際化配置呢,預設為false,生產階段也就需要false。設定為true之後,web伺服器(tomcat)會快取,啟動是會丟擲“couldn't clear tomcat cache”。

<constantname="struts.devMode"value="true"/>  開發階段配置,在web伺服器出錯時會盡量打印出來,一樣也是生產階段設定為false,避免後臺結構被人發現。

<constant name="struts.configuration.xml.reload"value="true"/>

 配置檔案修改後是否自動重新部署到伺服器,開發階段需要設定為true,否則需要不時重啟伺服器。

<constantname="struts.custom.i18n.resources"value="globalMessages"/>

 載入國際化配置檔案,多個配置檔案則用“,”隔開。

<constantname="struts.action.extension"value="action,,"/>

 預設請求字尾,多個使用","隔開。

<constant name="struts.i18n.encoding" value="UTF-8" />

指定Web應用的預設編碼集,相當於呼叫 HttpServletRequest的setCharacterEncoding方法。

<constant name="struts.serve.static.browserCache " value="true" /> 

設定瀏覽器是否快取靜態內容,預設值為true(生產環境下使用),開發階段最好關閉,方便除錯。

<constant name="struts.configuration" value="org.apache.struts2.config.DefaultConfiguration"/> 

指定載入struts2配置檔案管理器,預設為org.apache.struts2.config.DefaultConfiguration,開發者可以自定義配置檔案管理器,該類要實現Configuration介面,可以自動載入struts2配置檔案。

<constant name="struts.enable.SlashesInActionNames" value="false"/> 

該屬性設定Struts 2是否允許在Action名中使用斜線,該屬性的預設值是false。如果開發者希望允許在Action名中使用斜線,則可設定該屬性為true,儘可能不配置這個,很麻煩。

<constant name="struts.ui.theme" value="xhtml"/> 

該屬性指定檢視標籤預設的檢視主題,該屬性的預設值是xhtml,可以為simple,xhtml或ajax。

<constant name="struts.ui.templateDir" value="template"/> 

該屬性指定檢視主題所需要模板檔案的位置,該屬性的預設值是template,即預設載入template路徑下的模板檔案。 <constant name="struts.ui.templateSuffix" value="ftl"/> 

該屬性指定模板檔案的字尾,該屬性的預設屬性值是ftl。該屬性還允許使用ftl、vm或jsp,分別對應FreeMarker、 Velocity和JSP模板,模板使用即可,一本就是ftl字尾,沒有什麼影響。 <constant name="struts.url.http.port" value="80"/> 

該屬性指定Web應用所在的監聽埠。該屬性通常沒有太大的用處,只是當Struts 2需要生成URL時(例如Url標籤),該屬性才提供Web應用的預設埠,此處的埠和web伺服器的埠不一樣,但是不衝突,不在同一級別,不用擔心,後臺服務太多可以這樣配置,但是不是叢集大概也用不到了。 <constant name="struts.url.includeParams" value="none|get|all"/> 

該屬性指定Struts 2生成URL時是否包含請求引數。該屬性接受none、get和all三個屬性值,分別對應於不包含、僅包含GET型別請求引數和包含全部請求引數。 <constant name="struts.dispatcher.parametersWorkaround" value="false"/> 

對於某些Java EE伺服器,不支援HttpServlet Request呼叫getParameterMap()方法,此時可以設定該屬性值為true來解決該問題。該屬性的預設值是false。對於 WebLogic、Orion和OC4J伺服器,通常應該設定該屬性為true。 <constant name="struts.locale" value="zh_CN"/> 

預設的國際化地區資訊。 <constant name="struts.multipart.maxSize" value="2097152"/> 

multipart請求資訊的最大尺寸(檔案上傳用,該屬性指定Struts 2檔案上傳中整個請求內容允許的最大位元組數)。 <constant name="struts.multipart.parser" value="cos"/> 

該屬性指定處理 MIME-type multipart/form-data,檔案上傳(cos、pell、jakarta)專為multipart請求資訊使用的org.apache.struts2.dispatcher.multipart.MultiPartRequest解析器介面(檔案上傳用)。

<constantname="struts.convention.result.path"value="/"/> 

定義檢視資源的根目錄 <constantname="struts.configuration.xml.reload"value="true"/> 此配置之後,所有訪問都需要全路徑。

然後,

在Struts2框架中是通過包來管理action、result、interceptor、interceptor-stack等配置資訊的。

<package name="" namespace="" extends=""> </package>

name: package的標示符,唯一標記一個package。 namespace:名稱空間,影響訪問的action請求路徑,如namespace="/user",package下有login,register等action,那麼訪問login時需要/user/login來訪問。

Struts2中如果沒有為某個包指定名稱空間,該包使用預設的名稱空間,預設的名稱空間總是""。

extends:繼承,需要繼承struts的struts-default。當一個包通過配置extends屬性繼承了另一個包的時候,該包將會繼承父包中所有的配置,包括action、result、interceptor等。

由於包資訊的獲取是按照配置檔案的先後順序進行的,所以父包必須在子包之前被定義。

還有一個abstract屬性,用於宣告package屬性為抽象包,然後其它package繼承此package即可。

<action name="" method="" class=""> <result name="" type=""></result> </action>

action:

name: 請求名稱,加上namespace就是請求路徑。

method: 接到請求後執行的方法,預設執行execute(此處表示沒有method屬性)。

class: 處理方法所在的類,預設為Action(如果沒有配置此屬性)。

還有一個不常用的屬性,converter,Action的型別轉換器。

result:

name: Action返回結果,預設為SUCCESS("success").

type: 返回的型別,預設為dispatcher。

action中可以使用萬用字元。

請求萬用字元和返回結果均可使用,如,

<action name="user_*_*" method="user{2}" class="com.gopain.{1}"> <result name="type_{2}">/{2}_page.jsp</result> </action>

假如請求為,user_UserAction_login(不考慮namespace),其中 action中{1} 為UserAction,{2}為login,此請求會執行com.gopain.UserAction$userlogin().如果返回值為”type_login“,則會跳轉到login_page.jsp頁面。 此處只是舉例,站點不宜這樣配置請求。但是對於action的name配置很實用,不要奢望一個action配置完整個站點(雖然也可以實現,而且對於訪問沒有太多影響),十分不利於管理。

再列幾個常用配置:

<default-action-ref name="index"/>  當我們在配置Action的時候,如果沒有為某個Action指定具體的class值時,系統將自動引用<default-class-ref>標籤中所指定的類。在Struts2框架中,系統預設的class為ActionSupport,該配置我們可以在xwork的核心包下的xwork-default.xml檔案中找到。 <default-action-ref> 如果在請求一個沒有定義過的Action資源時,系統就會丟擲404錯誤。這種錯誤不可避免,但這樣的頁面並不友好。我們可以使用<default-action-ref>來指定一個預設的Action,如果系統沒有找到指定的Action,就會指定來呼叫這個預設的Action。

<default-interceptor-ref>

該標籤用來設定整個包範圍內所有Action所要應用的預設攔截器資訊。事實上我們的包繼承了struts-default包以後,使用的是Struts的預設設定。我們可以在struts-default.xml中找到相關配置: <default-interceptor-refname="defaultStack"/>

在實際開發過程中,如果我們有特殊的需求是可以改變預設攔截器配置的。當時一旦更改這個配置,“defaultStack”將不再被引用,需要手動追加。