官术网_书友最值得收藏!

3.4 Struts 2的配置

Struts 2框架提供了多種配置文件,主要有web.xml、strus.xml和struts-default.xml等,在本節中將重點介紹strus.xml配置項及配置內容,其他配置文件只給出簡單說明。

3.4.1 web.xml配置文件

使用Struts 2框架,必須在web.xml中配置支持Struts 2的主控制器。目前所使用的主控制器是StrutsPrepareAndExecuteFilter類,主要負責接收所有請求,并按規定的過濾要求執行相應的請求,在web.xml配置文件中配置,系統啟動時,自動創建該控制器。

具體配置格式與配置內容見3.2節。

3.4.2 struts-default.xml配置文件

struts-default.xml文件是Struts 2框架默認加載的配置文件,該文件存放在struts2-core.jar中,可以從中查找Struts 2默認的各種配置信息。

該配置文件提供了一些標準的核心配置,Struts 2的很多核心功能都是通過攔截器來實現的,例如,從請求中把請求參數封裝到Action、文件上傳和數據驗證等都是通過攔截器實現的。struts-default定義了這些攔截器和result類型。

Struts 2每次啟動都會自動加載struts-default.xml文件,需要在配置文件struts.xml中繼承在struts-default.xml中配置的包struts-default即可。具體使用格式見【例3-2】中所給出的配置信息。

3.4.3 struts.xml配置文件

struts.xml配置文件是Struts 2框架默認的核心配置文件。Struts 2應用的各個組件及其關系均在該文件中聲明并配置。

struts.xml配置文件的主要配置項有:常量配置、導入(包含)配置文件、包配置及包配置下的Action配置。

struts.xml配置文件的基本結構如下。

1.常量配置

在開發階段或運行階段,可以設置一些常量(屬性)值,設置Struts 2運行或開發時的環境,從而滿足需求。

常量配置格式如下。

    <constant name="屬性名" value="屬性值"/>

其中:name用于指定常量(屬性)的名稱;value用于指定常量的值。

例如,常用的一些常量如下。

    <! --指定應用的編碼集,相當于調用HttpServletRequest.setCharacterEncodint方法-->
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <! --設置瀏覽器是否緩存靜態內容,建議:開發時關閉,運行時開啟-->
    <constant name="struts.serve.static.browserCache" value="false" />
    <! --當struts.xml配置文件修改后,系統是否重新加載該文件,開發階段打開此功能-->
    <constant name="struts.configuration.xml.reload" value="true" />
    <! --開發提示:出錯時打印更詳細的信息-->
    <constant name="struts.devMode" value="true" />
    <! -- 指定請求的后綴可以是.do或.action,指定多個請求,后綴用逗號分隔-->
    <constant name="struts.action.extension" value="do, action"/>

注意:在開發環境中,最好進行以下配置。

    struts.i18n.reload=true  <-- 能夠重新加載國際化文件-->
    struts.devMode=true  <-- 能夠在開發模式下提供更全面的調試-->
    <--重新加載XML配置文件,當Action修改之后自動重新加載-->
    struts.configuration.xml.reload = true

2.包配置

Struts 2框架中的核心組件就是Action、攔截器等,Struts 2框架使用包來管理Action和攔截器等。每個包就是多個Action、多個攔截器或攔截器引用的集合。在實際應用中,應該把一組業務功能相關的Action和攔截器放在同一個包下。

在struts.xml文件中,package元素用于定義包配置,包配置格式如下。

    <package name="包名稱" namespace="/包的命名空間名" extends="struts-default">
      在該包下的Action配置
    </package>

其中各屬性的含義如下。

● name屬性:配置包時必須指定name屬性,該name屬性值可以任意取名,但必須唯一。如果其他包要繼承該包,必須通過該屬性進行引用。

● namespace屬性:包的namespace屬性用于定義該包的命名空間,命名空間作為訪問該包下Action的路徑的一部分。默認的命名空間為“/”(空字符串)。

● extends屬性:通常每個包都應該繼承struts-default包,該包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定義的,給出了Struts 2框架的核心配置信息。

例如下面給出包配置的代碼。

在該示例中,包名為abcde,命名空間為/user(注意:一定要有“/”)。繼承的是Struts 2在struts-default.xml中定義的包struts-default。

3.Action配置

Struts 2中Action類的配置能夠讓Struts 2知道Action的存在,并可以通過調用該Action來處理用戶請求。Struts 2使用包來組織和管理Action。

注意:Action配置必須配置在“包”下,在一個“包”下,可以配置多個Action。例如【例3-2】中的配置,就給出了2個Action的配置。

(1)Action的一般配置格式

    <action name="名稱"  class="Action對應的類全路徑名"  method="Action中某方法名">
      <result name="resultName" type="resultType">跳轉的目的地</result>
    </action>

<action>元素的常用屬性如下。

● name:指定客戶端發送請求的地址映射名稱,是必選項。

● class:指定Action對應的實現類,默認值為ActionSupport類。

● method:指定Action類中的處理方法名,默認值為Action中的execute方法。

(2)結果(result)配置

在Action配置項內含有Action的result子元素配置,用于當指定Action方法執行結束后,從該Action跳轉到目的地,結果配置格式如下。

    <result name="resultName" type="resultType">跳轉到目的地</result>

<result>元素的常用屬性如下。

● name:指定Action邏輯視圖名稱,默認值為success。

● type:指定結果類型所定向到的文件類型:JSP文件、Action類等,默認為JSP頁面。

(3)result類型——type屬性及屬性值

type可以有多種選擇,Struts 2支持的處理結果類型如表3-2所示。

表3-2 Struts 2支持的常用的處理結果類型

在這里主要介紹dispatcher、redirect、chain和redirectAction,其他的就不具體講解了,若在自己開發的系統中需要,可以查找有關的材料。

1)dispatcher。dispatcher是默認類型,表示轉發到JSP頁面,如下面的代碼所示。

    <result name="success" type="dispatcher">/common/message.jsp</result>

由于dispatcher是默認類型,可以省略默認值,其簡化格式如下。

    <result name="success">/common/message.jsp</result>

由于name的默認值為success,所以還可以簡化為以下格式。

    <result>/common/message.jsp</result>

2)redirect。類型redirect表示重定向到JSP頁面,配置方法與dispatcher類型的配置方法類似。

3)chain。類型chain表示轉發到Action,形成action-chain,按Struts 2框架所規定的執行次序進行過濾運行。該類型值的配置可以指定兩個屬性值。

● actionName指定轉向的Action名。

● namespace指定轉向的Action所在的命名空間。

格式如下。

    <result name="resultName" type="chain">
      <! -- 指定Action的命名空間——要轉向到其他命名空間的Action中,必須設置-->
      <param name="namespace">/要轉向到的命名空間名</param>
        <! -- 指定Action名 -->
      <param name="actionName">/要轉向到的Action名</param>
    </result>

若在同一個命名空間下,可以簡寫為以下格式。

    <result name="resultName" type="chain">/要轉向到的Action名</result>

4)redirectAction。類型redirectAction表明是重定向Action,其配置方法與chain類似。

4.包含配置

Struts 2的配置文件struts.xml提供了<include/>元素,它能夠把其他程序員開發的配置文件包含過來,但是被包含的每個配置文件必須與struts.xml格式一樣。Struts 2框架將按照順序加載配置文件。包含配置格式如下。

    <include file="文件名"/>

<include/>元素的屬性只有flie,用于指定配置文件名,是必選項

例如,在【例3-2】中,首先創建了配置文件struts-user.xml,在該配置文件中只給出了用戶登錄、注冊等操作的配置,然后將其包含到struts.xml文件中。

提示:在通常的應用開發中,為每個不同的模塊單獨配置一個“struts-模塊名稱.xml”文件,這樣也利于管理和維護。

主站蜘蛛池模板: 射洪县| 开封县| 潮州市| 阿荣旗| 大洼县| 平顺县| 辽阳市| 建平县| 黑龙江省| 凤城市| 常山县| 庄河市| 绿春县| 电白县| 临颍县| 南通市| 英吉沙县| 剑阁县| 灵丘县| 丰顺县| 苗栗县| 胶南市| 教育| 南京市| 扎囊县| 抚松县| 益阳市| 乌鲁木齐县| 开江县| 习水县| 屯门区| 密云县| 松桃| 同江市| 丽水市| 衢州市| 东山县| 乐至县| 滁州市| 濉溪县| 三河市|