1. 程式人生 > >三、Struts2配置檔案的介紹

三、Struts2配置檔案的介紹

struts2的配置檔案

package標籤

如果要配置<Action>的標籤,那麼必須要先配置<package>標籤,代表的包的概念,包含的屬性有:

  • name:包的名稱,要求是唯一的,管理action配置,隨便起名字。
  • extends:繼承,可以繼承其他的包,只要繼承了,那麼該包就包含了其他包的功能,一般都是繼承struts-default。
  • namespace:名稱空間,一般與<action>標籤中的name屬性共同決定訪問路徑(通俗話:怎麼來訪問action),常見的配置有namespace="/" 表示根名稱空間,或者namespace="/aaa"表示帶有名稱的名稱空間,匹配url時先要匹配/aaa,然後再去匹配action標籤的name屬性。
  • abstract:抽象的,這個屬性基本很少使用,值如果是true,那麼編寫的包是被繼承的。

action標籤

package標籤的子標籤,代表配置action類即響應請求的類,包含的屬性如下:

  • name:和<package>標籤的namespace屬性一起來決定訪問路徑的。
  • class:配置Action類的全路徑(如不配置,預設值是Struts2框架提供的ActionSupport類)。
  • method:Action類中執行的方法,如果不指定,預設值是execute。

result標籤

action標籤的字標籤,處理響應類的指定方法執行完後的結果以及跳轉方式,包含如下屬性:

  • name:結果頁面邏輯檢視名稱,和響應類中指定方法的返回結果保持一致。
  • type:結果型別(預設值是轉發,也可以設定其他的值)。

Struts2的常量配置

通常如果想要覆蓋系統預設的常量值的話,可以在自定義的struts.xml中設設定,這樣就可以覆蓋系統的常量值了,常用的常量有如下:

  • struts.i18n.encoding=UTF-8:指定預設編碼集,作用於HttpServletRequest的setCharacterEncoding方法 。
  • struts.action.extension=action,:該屬性指定需要Struts 2處理的請求字尾,該屬性的預設值是action,即所有匹配*.action的請求都由Struts2處理。如果使用者需要指定多個請求字尾,則多個字尾之間以英文逗號(,)隔開,注意觀察這裡是有兩個逗號,說明除了匹配action字尾外,還可以匹配空白字串即沒有後綴名也可以匹配。
  • struts.serve.static.browserCache=true :設定瀏覽器是否快取靜態內容,預設值為true(生產環境下使用),開發階段最好關閉。
  • struts.configuration.xml.reload=false:當struts的配置檔案修改後,系統是否自動重新載入該檔案,預設值為false(生產環境下使用) 。
  • struts.devMode = false: 開發模式下使用,這樣可以打印出更詳細的錯誤資訊。

那麼如何編寫呢?
類似這樣<constant name="key" value="value"></constant>,只需要替換key和value就可以了.key是固定的寫法,參考預設配置檔案即可。

分包管理Struts2配置檔案

在大部分應用裡,隨著應用規模的增加,系統中Action的數量也會大量增加,導致struts.xml配置檔案變得非常臃腫。
為了避免struts.xml檔案過於龐大、臃腫,提高struts.xml檔案的可讀性,我們可以將一個struts.xml配置檔案分解成多個配置檔案,然後在struts.xml檔案中包含其他配置檔案。
將其他配置檔案放在各個響應類所在的包下,命名為struts_xx.xml,然後在src目錄下的struts.xml檔案中進行引入。
可以在<struts>標籤內,使用<include>標籤來引入其他的struts_xx.xml的配置檔案。例如:

<?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>
	
	<!--注意要寫全路徑名-->
	<include file="blog/csdn/net/mchenys/web/struts_customer.xml"/>
	<include file="blog/csdn/net/mchenys/web/struts_user.xml"/>
	
</struts>

這種方式,通常也比較少用,因為Struts2還支援萬用字元的訪問和動態方法訪問的方式,後面會介紹這2種方式的做法。